func getQueryArg()

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)
	}
}