Совместимость контракта Avro с enum

#avro

#авро

Вопрос:

У меня есть существующая схема 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
}
 

Комментарии:

1. У вас уже есть значение по умолчанию null. Какова точная ошибка?

Ответ №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
}
 

Комментарии:

1. Это правильное решение этой проблемы