【问题标题】:Compatibility of Avro contract with enumAvro 合约与枚举的兼容性
【发布时间】:2020-11-30 12:14:43
【问题描述】:

我有一个现有的 avro 架构

{
"name": "myenum",
"type": {
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    },
"default": null
}

我想将 null 添加为默认值,并将合同更新为以下导致向后兼容性错误。有什么办法可以解决这个问题

{
"name": "myenum",
"type": [ null, {
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }],
"default": null
}

【问题讨论】:

  • 您已经有一个默认值 null。确切的错误是什么?

标签: avro


【解决方案1】:

添加的null有问题。

{
    "name": "myenum",
    "type": [ null, { <- problem
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }],
    "default": null
}

它应该在引号内:null => "null"。所以更新后的定义如下:

{
    "name": "myenum",
    "type": [ "null", { <- change
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }],
    "default": null
}

【讨论】:

  • 这是解决这个问题的正确方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多