[
https://issues.apache.org/jira/browse/AVRO-3528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Fokko Driesprong updated AVRO-3528:
-----------------------------------
Fix Version/s: 1.13.0
(was: 1.12.0)
> Optionally support strict LogicalType parsing
> ---------------------------------------------
>
> Key: AVRO-3528
> URL: https://issues.apache.org/jira/browse/AVRO-3528
> Project: Apache Avro
> Issue Type: Improvement
> Components: java
> Affects Versions: 1.11.0
> Reporter: Andrei Leibovski
> Assignee: Andrei Leibovski
> Priority: Minor
> Labels: pull-request-available
> Fix For: 1.13.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> My organization uses Avro schemas extensively. We use Confluent schema
> registry for data governance, enforcing data contracts between various
> components. We are seeing proliferation of questionable LogicalType
> structures within our schemas, like the following:
> {code:java}
> {
> "namespace": "org.apache.avro.example",
> "type": "record",
> "name": "BadLogical",
> "fields": [
> {
> "name": "f0",
> "type":{
> "type": "string",
> "java-class": "java.math.BigDecimal",
> "logicalType": "decimal",
> "precision": 9,
> "scale": 2
> }
> }
> ]
> } {code}
> There are two issues in the above structure:
> # string is not allowed to back the decimal LogicalType
> # java-class property and some others, are incompatible for any LogicalType
> Currently Avro allows such structures to pass validation and has no option to
> disallow them. Since Confluent schema registry delegates all avro schema
> validation to Avro, these structures are allowed to be registered.
> *Proposition:*
> Implement an option to switch avro Schema.Parser to LogicalType strict mode
> where such structures will be detected and disallowed.
> The change is fairly trivial, most of the plumbing is already there. I have
> implemented the required functionality and covered it with with tests, but I
> would like to solicit some feedback on this proposal before submitting my PR.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)