elodina / go-avro

Apache Avro for Golang

Home Page:http://elodina.github.io/go-avro/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

codegen can not create go structs with `union` schema

syslot opened this issue · comments

Hi,go-avro is a nice tool for golang to process avro ,but I find that codegen can not create go structs with union schema,is it a bug?

Hi, codegen should be able to work with union schemas, can you please attach an example that isn't working for you so I could take a look?

Thanks!

Here is a schema for union schema, but I can't use go-avro to serialise it
[
{
"type": "int",
"name": "MssLog"
},
{
"type": "string",
"name": "AtsLog"
}
]

Codegen is able to work ONLY with Record schemas so this example is not expected to produce a Go struct with codegen.

Depending on what Go struct you expect I'd suggest using one of following schemas:

{
    "type": "record",
    "namespace": "avro",
    "name": "SomeRecord",
    "fields": [
        {
            "name": "MssAtsLog",
            "type": [
                "int",
                "string"
            ]
        }
    ]
}

or

{
    "type": "record",
    "namespace": "avro",
    "name": "SomeRecord",
    "fields": [
        {
            "name": "MssLog",
            "type": "int"
        },
        {
            "name": "AtsLog",
            "type": "string"
        }
    ]
}

Closing this issue for now, if you have some more questions feel free to reopen it or open another one please.
Thanks!

thanks for your answer, but it doesn't work for me

Can you please explain what exactly behavior you expect so I could help you or guide the right path?

In my case, I have got a schema working in process by Java for data mining. Now I decede to restruct our source by Golang. In order to reuse the data mining system, I must use the schema ,which is union type just like below.

[
    {
        "type": "int",
        "name": "MssLog"
    },
    {
        "type": "string",
        "name": "AtsLog"
    }
]