in parquet/internal/testutils/random_arrow.go [37:195]
func RandomNonNull(mem memory.Allocator, dt arrow.DataType, size int) arrow.Array {
switch dt.ID() {
case arrow.FLOAT32:
bldr := array.NewFloat32Builder(mem)
defer bldr.Release()
values := make([]float32, size)
FillRandomFloat32(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.FLOAT64:
bldr := array.NewFloat64Builder(mem)
defer bldr.Release()
values := make([]float64, size)
FillRandomFloat64(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.FLOAT16:
bldr := array.NewFloat16Builder(mem)
defer bldr.Release()
values := make([]float16.Num, size)
FillRandomFloat16(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.INT64:
bldr := array.NewInt64Builder(mem)
defer bldr.Release()
values := make([]int64, size)
FillRandomInt64(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.UINT64:
bldr := array.NewUint64Builder(mem)
defer bldr.Release()
values := make([]uint64, size)
FillRandomUint64(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.INT32:
bldr := array.NewInt32Builder(mem)
defer bldr.Release()
values := make([]int32, size)
FillRandomInt32(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.UINT32:
bldr := array.NewUint32Builder(mem)
defer bldr.Release()
values := make([]uint32, size)
FillRandomUint32(0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.INT16:
bldr := array.NewInt16Builder(mem)
defer bldr.Release()
values := make([]int16, size)
FillRandomInt16(0, 0, 64, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.UINT16:
bldr := array.NewUint16Builder(mem)
defer bldr.Release()
values := make([]uint16, size)
FillRandomUint16(0, 0, 64, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.INT8:
bldr := array.NewInt8Builder(mem)
defer bldr.Release()
values := make([]int8, size)
FillRandomInt8(0, 0, 64, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.UINT8:
bldr := array.NewUint8Builder(mem)
defer bldr.Release()
values := make([]uint8, size)
FillRandomUint8(0, 0, 64, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
case arrow.DATE32:
bldr := array.NewDate32Builder(mem)
defer bldr.Release()
values := make([]int32, size)
FillRandomInt32Max(0, 24, values)
dates := make([]arrow.Date32, size)
for idx, val := range values {
dates[idx] = arrow.Date32(val) * 86400000
}
bldr.AppendValues(dates, nil)
return bldr.NewArray()
case arrow.DATE64:
bldr := array.NewDate64Builder(mem)
defer bldr.Release()
values := make([]int64, size)
FillRandomInt64Max(0, 24, values)
dates := make([]arrow.Date64, size)
for idx, val := range values {
dates[idx] = arrow.Date64(val) * 86400000
}
bldr.AppendValues(dates, nil)
return bldr.NewArray()
case arrow.STRING:
bldr := array.NewStringBuilder(mem)
defer bldr.Release()
for i := 0; i < size; i++ {
bldr.Append("test-string")
}
return bldr.NewArray()
case arrow.LARGE_STRING:
bldr := array.NewLargeStringBuilder(mem)
defer bldr.Release()
for i := 0; i < size; i++ {
bldr.Append("test-large-string")
}
return bldr.NewArray()
case arrow.BINARY, arrow.LARGE_BINARY:
bldr := array.NewBinaryBuilder(mem, dt.(arrow.BinaryDataType))
defer bldr.Release()
buf := make([]byte, 12)
r := rand.New(rand.NewSource(0))
for i := 0; i < size; i++ {
length := r.Intn(12-2+1) + 2
r.Read(buf[:length])
bldr.Append(buf[:length])
}
return bldr.NewArray()
case arrow.FIXED_SIZE_BINARY:
bldr := array.NewFixedSizeBinaryBuilder(mem, &arrow.FixedSizeBinaryType{ByteWidth: 10})
defer bldr.Release()
buf := make([]byte, 10)
r := rand.New(rand.NewSource(0))
for i := 0; i < size; i++ {
r.Read(buf)
bldr.Append(buf)
}
return bldr.NewArray()
case arrow.DECIMAL:
dectype := dt.(*arrow.Decimal128Type)
bldr := array.NewDecimal128Builder(mem, dectype)
defer bldr.Release()
data := RandomDecimals(int64(size), 0, dectype.Precision)
bldr.AppendValues(arrow.Decimal128Traits.CastFromBytes(data), nil)
return bldr.NewArray()
case arrow.BOOL:
bldr := array.NewBooleanBuilder(mem)
defer bldr.Release()
values := make([]bool, size)
FillRandomBooleans(0.5, 0, values)
bldr.AppendValues(values, nil)
return bldr.NewArray()
}
return nil
}