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

Method Read

plugins/destination/duckdb/client/read.go:19–77  ·  view source on GitHub ↗
(ctx context.Context, table *schema.Table, res chan<- arrow.RecordBatch)

Source from the content-addressed store, hash-verified

17)
18
19func (c *Client) Read(ctx context.Context, table *schema.Table, res chan<- arrow.RecordBatch) error {
20 f, err := os.CreateTemp("", fmt.Sprintf("%s-*.parquet", table.Name))
21 if err != nil {
22 return err
23 }
24
25 defer os.Remove(f.Name())
26 sc := table.ToArrowSchema()
27 fName := f.Name()
28 if err := f.Close(); err != nil {
29 return err
30 }
31
32 var sb strings.Builder
33 sb.WriteString("copy " + sanitizeID(table.Name) + " (")
34 for i, col := range sc.Fields() {
35 sb.WriteString(sanitizeID(col.Name))
36 if i < len(sc.Fields())-1 {
37 sb.WriteString(", ")
38 }
39 }
40 sb.WriteString(") to '" + f.Name() + "' (FORMAT PARQUET)")
41
42 if err := c.exec(ctx, sb.String()); err != nil {
43 return err
44 }
45 f, err = os.Open(fName)
46 if err != nil {
47 return err
48 }
49
50 rdr, err := file.NewParquetReader(f)
51 if err != nil {
52 return fmt.Errorf("failed to create new parquet reader: %w", err)
53 }
54 arrProps := pqarrow.ArrowReadProperties{
55 Parallel: false,
56 BatchSize: 1024,
57 }
58 fr, err := pqarrow.NewFileReader(rdr, arrProps, memory.DefaultAllocator)
59 if err != nil {
60 return fmt.Errorf("failed to create new parquet file reader: %w", err)
61 }
62 rr, err := fr.GetRecordReader(ctx, nil, nil)
63 if err != nil {
64 return fmt.Errorf("failed to get parquet record reader: %w", err)
65 }
66
67 for rr.Next() {
68 for _, r := range slice(reverseTransformRecord(sc, rr.RecordBatch())) {
69 res <- r
70 }
71 }
72 if rr.Err() != nil && rr.Err() != io.EOF {
73 return fmt.Errorf("failed to read parquet record: %w", rr.Err())
74 }
75
76 return nil

Callers

nothing calls this directly

Calls 8

execMethod · 0.95
sliceFunction · 0.85
reverseTransformRecordFunction · 0.85
ErrorfMethod · 0.80
NextMethod · 0.80
sanitizeIDFunction · 0.70
CloseMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected