avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yibing Shi (JIRA)" <j...@apache.org>
Subject [jira] [Created] (AVRO-1883) Schema validator cannot find broken backwards compatibility in Union type elements
Date Sun, 17 Jul 2016 23:46:20 GMT
Yibing Shi created AVRO-1883:
--------------------------------

             Summary: Schema validator cannot find broken backwards compatibility in Union
type elements
                 Key: AVRO-1883
                 URL: https://issues.apache.org/jira/browse/AVRO-1883
             Project: Avro
          Issue Type: Bug
    Affects Versions: 1.8.1
            Reporter: Yibing Shi
            Priority: Critical


Consider below 2 schemas:

*Schema 1*:
{noformat}
[
  {
    "type": "record",
    "name": "rec1",
    "fields": [
      {
        "name": "age",
        "type": "long"
      }
    ]
  },
  {
    "type": "record",
    "name": "rec2",
    "fields": [
      {
        "name": "username",
        "type": "string"
      }
    ]
  }
]
{noformat}

*Schema 2*:
{noformat}
[
  {
    "type": "record",
    "name": "rec1",
    "fields": [
      {
        "name": "age",
        "type": "long"
      },
      {
        "name": "address",
        "type": "string"
      }
    ]
  },
  {
    "type": "record",
    "name": "rec2",
    "fields": [
      {
        "name": "username",
        "type": "string"
      }
    ]
  }
]
{noformat}

The {{rec1}} field in these 2 unions are not compatible, because the {{address}} field of
{{rec1}} in the second one is not nullable. However, if we check them with validate like below,
validator doesn't return any error:
{code}
    final SchemaValidator backwardValidator = new SchemaValidatorBuilder().canReadStrategy().validateLatest();
    final Schema schema1 = new Schema.Parser().parse(schema1Str);
    final Schema schema2 = new Schema.Parser().parse(schema2Str);
    backwardValidator.validate(schema2, Arrays.asList(schema1));
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message