in go/adbc/driver/snowflake/statement.go [293:340]
func getQueryArg(arr arrow.Array) interface{} {
switch arr := arr.(type) {
case *array.Int8:
v := arr.Int8Values()
return convToSlice[int8, int32](arr, v)
case *array.Uint8:
v := arr.Uint8Values()
return convToSlice[uint8, int32](arr, v)
case *array.Int16:
v := arr.Int16Values()
return convToSlice[int16, int32](arr, v)
case *array.Uint16:
v := arr.Uint16Values()
return convToSlice[uint16, int32](arr, v)
case *array.Int32:
v := arr.Int32Values()
return convToSlice[int32, int32](arr, v)
case *array.Uint32:
v := arr.Uint32Values()
return convToSlice[uint32, int64](arr, v)
case *array.Int64:
v := arr.Int64Values()
return convToSlice[int64, int64](arr, v)
case *array.Uint64:
v := arr.Uint64Values()
return convToSlice[uint64, int64](arr, v)
case *array.Float32:
v := arr.Float32Values()
return convToSlice[float32, float64](arr, v)
case *array.Float64:
v := arr.Float64Values()
return convToSlice[float64, float64](arr, v)
case *array.LargeBinary:
return convToArr[[]byte](arr)
case *array.Binary:
return convToArr[[]byte](arr)
case *array.LargeString:
return convToArr[string](arr)
case *array.String:
return convToArr[string](arr)
default:
// default convert to array of strings and pass to snowflake driver
// not the most efficient, but snowflake doesn't really give a better
// route currently short of writing everything out to a Parquet file
// and then uploading that (which might be preferable)
return convMarshal(arr)
}
}