I'd like to point out that nanoseconds timestamps are an area where the JSON 
encoding is acutely broken as it stands.

1) Per RFC 8259 Section 6 [1], integer numbers can only be relied on in the 
range -2^53+1 to 2^53-1, which is incompatible with the Avro "long" type. 
Integers outside the range MUST be represented as strings in JSON, which is 
often overlooked, but which Avro MUST NOT overlook as a general purpose 
serialization framework.
2) the "now" timestamp in nanoseconds takes up 61 bits and can thus not be 
reliably represented in a JSON number per spec.

Since epoch values don't include TZ info they are generally also quite terrible 
for interop, which is the supposed goal of the JSON encoding, a future release 
should encode timestamps and dates in RFC3339 format, at the very least for the 
JSON encoding, as proposed in AVRO-3986 [2][3], which also addresses a range of 
other interop problems.


[1] https://www.rfc-editor.org/rfc/rfc8259#section-6
[2] https://issues.apache.org/jira/browse/AVRO-3986
[3] avrotize/avrojson.md at master · clemensv/avrotize · 
GitHub<https://github.com/clemensv/avrotize/blob/master/avrojson.md>

________________________________
Von: glywk <glywk.cont...@gmail.com>
Gesendet: Samstag, 4. Januar 2025 17:42
An: dev@avro.apache.org <dev@avro.apache.org>
Betreff: Add support of time logical type with nanoseconds precision

[Sie erhalten nicht häufig E-Mails von glywk.cont...@gmail.com. Weitere 
Informationen, warum dies wichtig ist, finden Sie unter 
https://aka.ms/LearnAboutSenderIdentification ]

Hi,

Since release 1.12.0 Avro specification allows to represent *timestamps*
and *local timestamps* with nanoseconds precision.

I would propose adding this precision to the *time* logical type Avro
specification to have an homogeneous precision in all times logical types.

Whole description can be viewed in AVRO-4043
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FAVRO-4043&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824113204%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=%2BoFrs2Lv79nXomm79Y9s5253Gm2%2FoIYtnbOU9ZOZ3WU%3D&reserved=0<https://issues.apache.org/jira/browse/AVRO-4043>>
 and in PR#3125
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Favro%2Fpull%2F3125&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824129269%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=WUgtCL7HVEzr%2BgvceaLprJy5sXszgFeBcKcOyq3zxsI%3D&reserved=0<https://github.com/apache/avro/pull/3125>>
 and some implementations:

   - AVRO-4044: [C++] Add time-nanos logical type
   
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FAVRO-4044&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824140522%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=d0kGo5mYoiWWskkCoyRWeECArsArk2X9bCAZ8A46Wlk%3D&reserved=0<https://issues.apache.org/jira/browse/AVRO-4044>>
 : PR#3147
   
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Favro%2Fpull%2F3147&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824152731%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=sA7fnnyE7qS2mgqrcp7LhEOGlI2iiZWEpUt0%2BvL8nLI%3D&reserved=0<https://github.com/apache/avro/pull/3147>>
   - AVRO-4056: [Java] Add time-nanos logical type
   
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FAVRO-4056&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824165146%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=8athsdpQivRjfXH2ka2NIdxigDQGBM8nnluRz9MvGkc%3D&reserved=0<https://issues.apache.org/jira/browse/AVRO-4056>>
 : PR#3158
   
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Favro%2Fpull%2F3158&data=05%7C02%7Cclemensv%40microsoft.com%7C31b3729197a7492e2ed108dd2ce737f9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638716093824176194%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C80000%7C%7C%7C&sdata=4fGwWl2AjsjnhVwttKpa5LkjgXD9rmIE5t7RvHAf5G4%3D&reserved=0<https://github.com/apache/avro/pull/3158>>

Regards

Reply via email to