Fedor Telnov created AVRO-3780:
----------------------------------

             Summary: [Rust] Bug: decimal logical type usage through Fixed
                 Key: AVRO-3780
                 URL: https://issues.apache.org/jira/browse/AVRO-3780
             Project: Apache Avro
          Issue Type: Bug
          Components: rust
            Reporter: Fedor Telnov


Currently, fixed type almost could not be used to represent decimal logical 
type.

What am I trying to do is to parse such a schema:

```

        {
          "type": "record",
          "name": "recordWithDecimal",
          "fields": [
           

{               "name": "id",               "type": "string"             }

,
            {
              "name": "decimal",
              "type":

{                 "type": "fixed",                 "name": "nestedFixed",       
          "size": 8,                 "logicalType": "decimal",                 
"precision": 4               }

            }
          ],
        }

```

It must be working if we strictly follow the avro specs. It does not work on 
master - you can see it through the test I supplied in the attached PR.

Interestingly, such a thing works with bytes, so following schema works great:

```

        {
          "type": "record",
          "name": "recordWithDecimal",
          "fields": [
            {
              "name": "id",
              "type": "string"
            },
            {
              "name": "decimal",
              "type": {
                "type": "bytes",
                "name": "nestedFixed",
                "logicalType": "decimal",
                "precision": 4
              }
            }
          ],
        }

```

 

And the only existing workaround is to extract decimal attributes to the field 
declaration, like so:

```

{
              "name": "decimal",
              "type": {
                "type": "fixed",
                "name": "nestedFixed"
              },
              "size": 8,
              "logicalType": "decimal",
              "precision": 4
}
```

Such a workaround should not be treated as an acceptable variant as it does not 
follow avro specification at all(I think, such a syntax is an extension, 
introduced in the Rust crate - correct me if I'm wrong).

 

I haven't investigated the roots yet, so any thoughts are welcome before I do 
it myself.

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to