@@ -51,11 +51,7 @@ func (p projection) aggCols() []column {
5151func newColumn (name string , loc ast.Expr , e sem.Expr , funcs * aggfuncs ) (* column , error ) {
5252 c := & column {name : name , loc : loc }
5353 cnt := len (* funcs )
54- var err error
55- c .expr , err = funcs .subst (e )
56- if err != nil {
57- return nil , err
58- }
54+ c .expr = funcs .subst (e )
5955 c .isAgg = cnt != len (* funcs )
6056 return c , nil
6157}
@@ -76,169 +72,88 @@ func (a aggfuncs) tmp() string {
7672 return fmt .Sprintf ("t%d" , len (a ))
7773}
7874
79- func (a * aggfuncs ) subst (e sem.Expr ) (sem.Expr , error ) {
80- var err error
75+ func (a * aggfuncs ) subst (e sem.Expr ) sem.Expr {
8176 switch e := e .(type ) {
8277 case nil :
83- return e , nil
78+ return e
8479 case * sem.AggFunc :
8580 // swap in a temp column for each agg function found, which
8681 // will then be referred to by the containing expression.
8782 // The agg function is computed into the tmp value with
8883 // the generated aggregate operator.
8984 tmp := a .tmp ()
9085 * a = append (* a , namedAgg {name : tmp , agg : e })
91- return sem .NewThis (e , []string {"in" , tmp }), nil
86+ return sem .NewThis (e , []string {"in" , tmp })
9287 case * sem.ArrayExpr :
93- elems , err := a .substArrayElems (e .Elems )
94- if err != nil {
95- return nil , err
96- }
97- e .Elems = elems
88+ e .Elems = a .substArrayElems (e .Elems )
9889 case * sem.BinaryExpr :
99- e .LHS , err = a .subst (e .LHS )
100- if err != nil {
101- return nil , err
102- }
103- e .RHS , err = a .subst (e .RHS )
104- if err != nil {
105- return nil , err
106- }
90+ e .LHS = a .subst (e .LHS )
91+ e .RHS = a .subst (e .RHS )
10792 case * sem.CallExpr :
10893 for k , arg := range e .Args {
109- e .Args [k ], err = a .subst (arg )
110- if err != nil {
111- return nil , err
112- }
94+ e .Args [k ] = a .subst (arg )
11395 }
11496 case * sem.CondExpr :
115- e .Cond , err = a .subst (e .Cond )
116- if err != nil {
117- return nil , err
118- }
119- e .Then , err = a .subst (e .Then )
120- if err != nil {
121- return nil , err
122- }
123- e .Else , err = a .subst (e .Else )
124- if err != nil {
125- return nil , err
126- }
97+ e .Cond = a .subst (e .Cond )
98+ e .Then = a .subst (e .Then )
99+ e .Else = a .subst (e .Else )
127100 case * sem.DotExpr :
128- e .LHS , err = a .subst (e .LHS )
129- if err != nil {
130- return nil , err
131- }
101+ e .LHS = a .subst (e .LHS )
132102 case * sem.IndexExpr :
133- e .Expr , err = a .subst (e .Expr )
134- if err != nil {
135- return nil , err
136- }
137- e .Index , err = a .subst (e .Index )
138- if err != nil {
139- return nil , err
140- }
103+ e .Expr = a .subst (e .Expr )
104+ e .Index = a .subst (e .Index )
141105 case * sem.IsNullExpr :
142- e .Expr , err = a .subst (e .Expr )
143- if err != nil {
144- return nil , err
145- }
106+ e .Expr = a .subst (e .Expr )
146107 case * sem.LiteralExpr :
147108 case * sem.MapExpr :
148109 for _ , ent := range e .Entries {
149- ent .Key , err = a .subst (ent .Key )
150- if err != nil {
151- return nil , err
152- }
153- ent .Value , err = a .subst (ent .Value )
154- if err != nil {
155- return nil , err
156- }
110+ ent .Key = a .subst (ent .Key )
111+ ent .Value = a .subst (ent .Value )
157112 }
158113 case * sem.RecordExpr :
159114 var elems []sem.RecordElem
160115 for _ , elem := range e .Elems {
161116 switch elem := elem .(type ) {
162117 case * sem.FieldElem :
163- sub , err := a .subst (elem .Value )
164- if err != nil {
165- return nil , err
166- }
118+ sub := a .subst (elem .Value )
167119 elems = append (elems , & sem.FieldElem {Node : elem , Name : elem .Name , Value : sub })
168120 case * sem.SpreadElem :
169- sub , err := a .subst (elem .Expr )
170- if err != nil {
171- return nil , err
172- }
173- elems = append (elems , & sem.SpreadElem {Node : elem , Expr : sub })
121+ elems = append (elems , & sem.SpreadElem {Node : elem , Expr : a .subst (elem .Expr )})
174122 default :
175123 panic (elem )
176124 }
177125 }
178126 e .Elems = elems
179127 case * sem.RegexpMatchExpr :
180- e .Expr , err = a .subst (e .Expr )
181- if err != nil {
182- return nil , err
183- }
128+ e .Expr = a .subst (e .Expr )
184129 case * sem.RegexpSearchExpr :
185- e .Expr , err = a .subst (e .Expr )
186- if err != nil {
187- return nil , err
188- }
130+ e .Expr = a .subst (e .Expr )
189131 case * sem.SearchTermExpr :
190- e .Expr , err = a .subst (e .Expr )
191- if err != nil {
192- return nil , err
193- }
132+ e .Expr = a .subst (e .Expr )
194133 case * sem.SetExpr :
195- elems , err := a .substArrayElems (e .Elems )
196- if err != nil {
197- return nil , err
198- }
199- e .Elems = elems
134+ e .Elems = a .substArrayElems (e .Elems )
200135 case * sem.SliceExpr :
201- e .Expr , err = a .subst (e .Expr )
202- if err != nil {
203- return nil , err
204- }
205- e .From , err = a .subst (e .From )
206- if err != nil {
207- return nil , err
208- }
209- e .To , err = a .subst (e .To )
210- if err != nil {
211- return nil , err
212- }
136+ e .Expr = a .subst (e .Expr )
137+ e .From = a .subst (e .From )
138+ e .To = a .subst (e .To )
213139 case * sem.ThisExpr :
214140 case * sem.UnaryExpr :
215- e .Operand , err = a .subst (e .Operand )
216- if err != nil {
217- return nil , err
218- }
141+ e .Operand = a .subst (e .Operand )
219142 }
220- return e , nil
143+ return e
221144}
222145
223- func (a * aggfuncs ) substArrayElems (elems []sem.ArrayElem ) ( []sem.ArrayElem , error ) {
146+ func (a * aggfuncs ) substArrayElems (elems []sem.ArrayElem ) []sem.ArrayElem {
224147 var out []sem.ArrayElem
225148 for _ , e := range elems {
226149 switch e := e .(type ) {
227150 case * sem.SpreadElem :
228- sub , err := a .subst (e .Expr )
229- if err != nil {
230- return nil , err
231- }
232- out = append (out , & sem.SpreadElem {Node : e , Expr : sub })
151+ out = append (out , & sem.SpreadElem {Node : e , Expr : a .subst (e .Expr )})
233152 case * sem.ExprElem :
234- sub , err := a .subst (e .Expr )
235- if err != nil {
236- return nil , err
237- }
238- out = append (out , & sem.ExprElem {Node : e , Expr : sub })
153+ out = append (out , & sem.ExprElem {Node : e , Expr : a .subst (e .Expr )})
239154 default :
240155 panic (e )
241156 }
242157 }
243- return out , nil
158+ return out
244159}
0 commit comments