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

Method compileBinary

compiler/rungen/expr.go:107–132  ·  view source on GitHub ↗
(e *dag.BinaryExpr)

Source from the content-addressed store, hash-verified

105}
106
107func (b *Builder) compileBinary(e *dag.BinaryExpr) (expr.Evaluator, error) {
108 lhs, err := b.compileExpr(e.LHS)
109 if err != nil {
110 return nil, err
111 }
112 rhs, err := b.compileExpr(e.RHS)
113 if err != nil {
114 return nil, err
115 }
116 switch op := e.Op; op {
117 case "and":
118 return expr.NewLogicalAnd(b.sctx(), lhs, rhs), nil
119 case "or":
120 return expr.NewLogicalOr(b.sctx(), lhs, rhs), nil
121 case "in":
122 return expr.NewIn(b.sctx(), lhs, rhs), nil
123 case "==", "!=":
124 return expr.NewCompareEquality(b.sctx(), lhs, rhs, op)
125 case "<", "<=", ">", ">=":
126 return expr.NewCompareRelative(b.sctx(), lhs, rhs, op)
127 case "+", "-", "*", "/", "%":
128 return expr.NewArithmetic(b.sctx(), op, lhs, rhs)
129 default:
130 return nil, fmt.Errorf("invalid binary operator %s", op)
131 }
132}
133
134func (b *Builder) compileSearch(search *dag.SearchExpr) (expr.Evaluator, error) {
135 val, err := sup.ParseValue(b.sctx(), search.Value)

Callers 1

compileExprMethod · 0.95

Implementers 15

DynamicBuildervector/builder.go
recordBuildervector/builder.go
arraySetBuildervector/builder.go
mapBuildervector/builder.go
unionBuildervector/builder.go
fusionBuildervector/builder.go
enumBuildervector/builder.go
intBuildervector/builder.go
uintBuildervector/builder.go
floatBuildervector/builder.go
boolBuildervector/builder.go
bytesStringTypeBuildervector/builder.go

Calls 8

compileExprMethod · 0.95
sctxMethod · 0.95
NewLogicalAndFunction · 0.92
NewLogicalOrFunction · 0.92
NewInFunction · 0.92
NewCompareEqualityFunction · 0.92
NewCompareRelativeFunction · 0.92
NewArithmeticFunction · 0.92

Tested by

no test coverage detected