Does Arrow.jl support enums?

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
3 Likes