MCPcopy Create free account
hub / github.com/brimdata/super / NewVectorReader

Function NewVectorReader

sio/parquetio/vectorreader.go:41–107  ·  view source on GitHub ↗
(ctx context.Context, sctx *super.Context, r io.Reader, p sbuf.Pushdown, concurrentReaders int)

Source from the content-addressed store, hash-verified

39}
40
41func NewVectorReader(ctx context.Context, sctx *super.Context, r io.Reader, p sbuf.Pushdown, concurrentReaders int) (*VectorReader, error) {
42 if concurrentReaders < 1 {
43 panic(concurrentReaders)
44 }
45 ras, ok := r.(parquet.ReaderAtSeeker)
46 if !ok {
47 return nil, errNotSeekable
48 }
49 pr, err := file.NewParquetReader(ras)
50 if err != nil {
51 return nil, err
52 }
53 prmd := pr.MetaData()
54 pqprops := pqarrow.ArrowReadProperties{
55 Parallel: true,
56 BatchSize: 16184,
57 }
58 schemaManifest, err := pqarrow.NewSchemaManifest(prmd.Schema, prmd.KeyValueMetadata(), &pqprops)
59 if err != nil {
60 return nil, err
61 }
62 fr, err := pqarrow.NewFileReader(pr, pqprops, memory.NewGoAllocator())
63 if err != nil {
64 return nil, err
65 }
66 var metadataColIndexes []int
67 var metadataFilters []expr.Evaluator
68 if p != nil {
69 filter, projection, err := p.MetaFilter()
70 if err != nil {
71 return nil, err
72 }
73 if filter != nil {
74 paths := projection.Paths()
75 for i, p := range paths {
76 // Trim trailing "max" or "min".
77 paths[i] = p[:len(p)-1]
78 }
79 colIndexes := columnIndexes(pr.MetaData().Schema, paths)
80 // Remove duplicates created above by trimming "max" and "min".
81 metadataColIndexes = slices.Compact(colIndexes)
82 for range concurrentReaders {
83 filter, _, err := p.MetaFilter()
84 if err != nil {
85 return nil, err
86 }
87 metadataFilters = append(metadataFilters, filter)
88 }
89 }
90 }
91 var vbs []vectorBuilder
92 for range concurrentReaders {
93 vbs = append(vbs, vectorBuilder{sctx, map[arrow.DataType]super.Type{}})
94 }
95 return &VectorReader{
96 ctx: ctx,
97 sctx: sctx,
98 fr: fr,

Callers 1

VectorOpenMethod · 0.92

Calls 5

columnIndexesFunction · 0.85
PathsMethod · 0.80
MetaFilterMethod · 0.65
CompactMethod · 0.65
ProjectionMethod · 0.65

Tested by

no test coverage detected