Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
Description
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": "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": "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.
Attachments
Issue Links
- relates to
-
AVRO-3570 Logical type with "fixed" type not interoperable
- Open
- links to