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

Function VectorFilterCompile

compiler/package.go:106–142  ·  view source on GitHub ↗
(rctx *runtime.Context, query string, env *exec.Environment, head *dbid.Commitish)

Source from the content-addressed store, hash-verified

104}
105
106func VectorFilterCompile(rctx *runtime.Context, query string, env *exec.Environment, head *dbid.Commitish) (sbuf.Puller, error) {
107 // Eventually the semantic analyzer + rungen will resolve the pool but
108 // for now just do this manually.
109 if !env.IsAttached() {
110 return nil, errors.New("non-database vectorized search not supported")
111 }
112 poolID, err := env.PoolID(rctx.Context, head.Pool)
113 if err != nil {
114 return nil, err
115 }
116 commitID, err := env.CommitObject(rctx.Context, poolID, head.Branch)
117 if err != nil {
118 return nil, err
119 }
120 spec, err := head.FromSpec("")
121 if err != nil {
122 return nil, err
123 }
124 ast, err := parser.ParseText(fmt.Sprintf("%s | %s", spec, query))
125 if err != nil {
126 return nil, err
127 }
128 main, err := semantic.Analyze(rctx.Context, ast, env, false)
129 if err != nil {
130 return nil, err
131 }
132 entry := main.Body
133 // from -> filter -> output
134 if len(entry) != 3 {
135 return nil, errors.New("filter query must have a single op")
136 }
137 f, ok := entry[1].(*dag.FilterOp)
138 if !ok {
139 return nil, errors.New("filter query must be a single filter op")
140 }
141 return rungen.NewBuilder(rctx, env).BuildVamToSeqFilter(f.Expr, poolID, commitID)
142}
143
144// XXX currently used only by aggregate test, need to deprecate
145func CompileWithSortKey(rctx *runtime.Context, ast *parser.AST, r sio.Reader, sortKey order.SortKey) (*exec.Query, error) {

Callers 1

RunMethod · 0.92

Calls 9

ParseTextFunction · 0.92
AnalyzeFunction · 0.92
NewBuilderFunction · 0.92
IsAttachedMethod · 0.80
NewMethod · 0.80
FromSpecMethod · 0.80
BuildVamToSeqFilterMethod · 0.80
PoolIDMethod · 0.65
CommitObjectMethod · 0.65

Tested by

no test coverage detected