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

Method eval

runtime/vam/expr/recordexpr.go:72–91  ·  view source on GitHub ↗
(vecs ...vector.Any)

Source from the content-addressed store, hash-verified

70}
71
72func (r *recordExpr) eval(vecs ...vector.Any) vector.Any {
73 r.fields = r.fields[:0]
74 clear(r.fieldIndexes)
75 r.fieldVecs = make([]vector.Any, 0, len(r.elems))
76 length := vecs[0].Len()
77 for k, vec := range vecs {
78 switch elem := r.elems[k].(type) {
79 case *NoneElem:
80 r.addOrUpdateNone(elem.Name, elem.Type, length)
81 case *FieldElem:
82 r.addOrUpdateField(elem.Name, elem.Opt, vec)
83 case *SpreadElem:
84 r.spread(vec)
85 default:
86 panic(elem)
87 }
88 }
89 typ := r.sctx.MustLookupTypeRecord(r.fields)
90 return vector.NewRecord(typ, r.fieldVecs, vecs[0].Len())
91}
92
93func (r *recordExpr) addOrUpdateField(name string, opt bool, vec vector.Any) {
94 if i, ok := r.fieldIndexes[name]; ok {

Callers

nothing calls this directly

Calls 6

addOrUpdateNoneMethod · 0.95
addOrUpdateFieldMethod · 0.95
spreadMethod · 0.95
NewRecordFunction · 0.92
MustLookupTypeRecordMethod · 0.80
LenMethod · 0.65

Tested by

no test coverage detected