Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-3780

[Rust] Bug: decimal logical type usage through Fixed schema

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              mgrigorov Martin Tzvetanov Grigorov
              ftelnov Fedor Telnov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10m
                  10m