using Arrow
@enum MyEnum LALA1 LALA2 LALA3
ArrowTypes.arrowname(::Type{MyEnum}) = :MyEnum
ArrowTypes.JuliaType(::Val{:MyEnum}) = MyEnum
ArrowTypes.ArrowKind(::Type{MyEnum}) = ArrowTypes.PrimitiveKind
ArrowTypes.ArrowType(::Type{MyEnum}) = Int32
x = [LALA1, LALA1, LALA3, LALA2]
table = (cols1=x,)
io = IOBuffer()
Arrow.write(io, table)
seekstart(io)
table2 = Arrow.Table(io) # correctly reports 4 rows
table2.cols1
ArrowTypes.ArrowType seems to have been the missing piece, the above works returning:
4-element Arrow.Primitive{Main.AE.MyEnum, Vector{Int32}}:
LALA1::MyEnum = 0
LALA1::MyEnum = 0
LALA3::MyEnum = 2
LALA2::MyEnum = 1