Skip to content

Commit ee835b6

Browse files
authored
fix(parquet): Handle uint32 to uint64 array widening in reverseTransformArray (#721)
1 parent c3c0fb5 commit ee835b6

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

parquet/read.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ func reverseTransformArray(dt arrow.DataType, arr arrow.Array) arrow.Array {
6868
return reverseTransformTime64(dt.(*arrow.Time64Type), arr)
6969
case *array.Date32:
7070
return reverseTransformFromDate32(dt, arr)
71+
case *array.Uint32:
72+
return reverseTransformFromUint32(dt, arr)
7173
case *array.Struct:
7274
dt := dt.(*arrow.StructType)
7375
children := make([]arrow.ArrayData, arr.NumField())
@@ -100,6 +102,23 @@ func reverseTransformArray(dt arrow.DataType, arr arrow.Array) arrow.Array {
100102
}
101103
}
102104

105+
func reverseTransformFromUint32(dt arrow.DataType, arr *array.Uint32) arrow.Array {
106+
switch dt {
107+
case arrow.PrimitiveTypes.Uint64:
108+
builder := array.NewUint64Builder(memory.DefaultAllocator)
109+
for i := 0; i < arr.Len(); i++ {
110+
if arr.IsNull(i) {
111+
builder.AppendNull()
112+
continue
113+
}
114+
builder.Append(uint64(arr.Value(i)))
115+
}
116+
return builder.NewArray()
117+
default:
118+
panic(fmt.Errorf("unsupported conversion from %s to %s", arr.DataType(), dt))
119+
}
120+
}
121+
103122
func reverseTransformFromString(dt arrow.DataType, arr arrow.Array) arrow.Array {
104123
builder := array.NewBuilder(memory.DefaultAllocator, dt)
105124
for i := 0; i < arr.Len(); i++ {

0 commit comments

Comments
 (0)