Повторное использование содержимого схемы меньшего размера в схеме большего размера не работает с avrogencpp
:
$ cat Test1.avsc
{
"name": "calcList",
"type": "array",
"items" : {
"name": "calcItem",
"type": "enum",
"symbols": [
"FOO", "BAR"
]
}
}
$ cat Test2.avsc
{
"name": "CalcInput",
"type": "record",
"fields": [
{
"name": "calcList",
"type": "array",
"items": {
"name": "calcItem",
"type": "enum",
"symbols" : [
"FOO", "BAR"
]
}
}
]
}
$ avrogencpp -i Test1.avsc -o Test1.h
$ avrogencpp -i Test2.avsc -o Test2.h
Failed to parse or compile schema: Unknown type: array
После некоторых экспериментов это похоже на работу с схемой большего размера:
$ cat Test3.avsc
{
"name": "CalcInput",
"type": "record",
"fields": [
{
"name": "calcList",
"type": {
"type": "array",
"items": {
"name": "calcItem",
"type": "enum",
"symbols" : [
"FOO", "BAR"
]
}
}
}
]
}
Но эта форма меньшей схемы не работает сама по себе:
$ cat Test4.avsc
{
"name": "calcList",
"type": {
"type": "array",
"items" : {
"name": "calcItem",
"type": "enum",
"symbols": [
"FOO", "BAR"
]
}
}
}
$ avrogencpp -i Test3.avsc -o Test3.h
$ avrogencpp -i Test4.avsc -o Test4.h
Failed to parse or compile schema: Json field "type" is not a string: {"items":{"name":"calcItem","symbols":["FOO","BAR"],"type":"enum"},"type":"array"}
Что происходит? Почему avrogencpp
не допускает схему массива в схеме записи? (Это авро cpp -1.9.1)