MCPcopy Create free account
hub / github.com/cloudquery/cloudquery / transformArray

Function transformArray

plugins/destination/duckdb/client/transform.go:23–82  ·  view source on GitHub ↗
(arr arrow.Array)

Source from the content-addressed store, hash-verified

21}
22
23func transformArray(arr arrow.Array) arrow.Array {
24 if arrow.TypeEqual(arr.DataType(), transformTypeForWriting(arr.DataType())) {
25 return arr
26 }
27
28 switch arr := arr.(type) {
29 case *types.UUIDArray, *types.InetArray, *types.MACArray, *types.JSONArray:
30 return transformToStringArray(arr)
31 case *array.Uint8:
32 return transformUint8ToUint32Array(arr)
33 case *array.Uint16:
34 return transformUint16ToUint32Array(arr)
35 case *array.Timestamp:
36 // mismatching unit or tz
37 return transformTimestamp(duckDBToArrow(arrowToDuckDB(arr.DataType())).(*arrow.TimestampType), arr)
38 case *array.Struct:
39 return transformStruct(arr)
40 case *array.Map:
41 return transformMap(arr)
42 case array.ListLike: // this includes maps, too
43 return array.MakeFromData(array.NewData(
44 transformTypeForWriting(arr.DataType()), arr.Len(),
45 arr.Data().Buffers(),
46 []arrow.ArrayData{transformArray(arr.ListValues()).Data()},
47 arr.NullN(),
48 // we use data offset for list like as the `ListValues` can be a larger array (happens when slicing)
49 arr.Data().Offset(),
50 ))
51 case *array.Date32:
52 return transformDate32ToTimestamp(arr)
53 case *array.Date64:
54 return transformDate64ToTimestamp(arr)
55 case *array.LargeBinary:
56 bldr := array.NewBinaryBuilder(memory.DefaultAllocator, arrow.BinaryTypes.Binary)
57 defer bldr.Release()
58 for i := 0; i < arr.Len(); i++ {
59 if arr.IsNull(i) {
60 bldr.AppendNull()
61 continue
62 }
63 val := arr.Value(i)
64 bldr.Append(val)
65 }
66 return bldr.NewBinaryArray()
67 case *array.LargeString:
68 bldr := array.NewStringBuilder(memory.DefaultAllocator)
69 defer bldr.Release()
70 for i := 0; i < arr.Len(); i++ {
71 if arr.IsNull(i) {
72 bldr.AppendNull()
73 continue
74 }
75 val := arr.Value(i)
76 bldr.Append(val)
77 }
78 return bldr.NewStringArray()
79 default:
80 return transformToStringArray(arr)

Callers 1

transformRecordFunction · 0.85

Calls 13

transformTypeForWritingFunction · 0.85
transformToStringArrayFunction · 0.85
transformTimestampFunction · 0.85
duckDBToArrowFunction · 0.85
arrowToDuckDBFunction · 0.85
transformStructFunction · 0.85
transformMapFunction · 0.85
AppendMethod · 0.80

Tested by

no test coverage detected