in arrow/internal/arrdata/arrdata.go [823:900]
func makeExtensionRecords() []array.Record {
mem := memory.NewGoAllocator()
p1Type := types.NewParametric1Type(6)
p2Type := types.NewParametric1Type(12)
p3Type := types.NewParametric2Type(2)
p4Type := types.NewParametric2Type(3)
p5Type := types.NewExtStructType()
arrow.RegisterExtensionType(p1Type)
arrow.RegisterExtensionType(p3Type)
arrow.RegisterExtensionType(p4Type)
arrow.RegisterExtensionType(p5Type)
meta := arrow.NewMetadata(
[]string{"k1", "k2"},
[]string{"v1", "v2"},
)
unregisteredMeta := arrow.NewMetadata(
append(meta.Keys(), ipc.ExtensionTypeKeyName, ipc.ExtensionMetadataKeyName),
append(meta.Values(), "unregistered", ""))
schema := arrow.NewSchema(
[]arrow.Field{
{Name: "p1", Type: p1Type, Nullable: true, Metadata: meta},
{Name: "p2", Type: p2Type, Nullable: true, Metadata: meta},
{Name: "p3", Type: p3Type, Nullable: true, Metadata: meta},
{Name: "p4", Type: p4Type, Nullable: true, Metadata: meta},
{Name: "p5", Type: p5Type, Nullable: true, Metadata: meta},
{Name: "unreg", Type: arrow.PrimitiveTypes.Int8, Nullable: true, Metadata: unregisteredMeta},
}, nil)
mask := []bool{true, false, true, true, false}
chunks := [][]array.Interface{
{
extArray(mem, p1Type, []int32{1, -1, 2, 3, -1}, mask),
extArray(mem, p2Type, []int32{2, -1, 3, 4, -1}, mask),
extArray(mem, p3Type, []int32{5, -1, 6, 7, 8}, mask),
extArray(mem, p4Type, []int32{5, -1, 7, 9, -1}, mask),
extArray(mem, p5Type, [][]array.Interface{
{
arrayOf(mem, []int64{1, -1, 2, 3, -1}, mask),
arrayOf(mem, []float64{0.1, -1, 0.2, 0.3, -1}, mask),
},
}, mask),
arrayOf(mem, []int8{-1, -2, -3, -4, -5}, mask),
},
{
extArray(mem, p1Type, []int32{10, -1, 20, 30, -1}, mask),
extArray(mem, p2Type, []int32{20, -1, 30, 40, -1}, mask),
extArray(mem, p3Type, []int32{50, -1, 60, 70, 8}, mask),
extArray(mem, p4Type, []int32{50, -1, 70, 90, -1}, mask),
extArray(mem, p5Type, [][]array.Interface{
{
arrayOf(mem, []int64{10, -1, 20, 30, -1}, mask),
arrayOf(mem, []float64{0.01, -1, 0.02, 0.03, -1}, mask),
},
}, mask),
arrayOf(mem, []int8{-11, -12, -13, -14, -15}, mask),
},
}
defer func() {
for _, chunk := range chunks {
for _, col := range chunk {
col.Release()
}
}
}()
recs := make([]array.Record, len(chunks))
for i, chunk := range chunks {
recs[i] = array.NewRecord(schema, chunk, -1)
}
return recs
}