(p Pipeline)
| 120 | } |
| 121 | |
| 122 | func (f *fieldExpressionRewriter) rewritePipeline(p Pipeline) (Pipeline, int) { |
| 123 | var rwCount int |
| 124 | |
| 125 | elements := make([]PipelineElement, 0, len(p.Elements)) |
| 126 | for _, elem := range p.Elements { |
| 127 | switch elem := elem.(type) { |
| 128 | case *SpansetFilter: |
| 129 | if elem == nil { |
| 130 | continue |
| 131 | } |
| 132 | fe, n := f.rewriteFieldExpression(elem.Expression) |
| 133 | elements = append(elements, newSpansetFilter(fe)) |
| 134 | rwCount += n |
| 135 | case ScalarFilter: |
| 136 | lhs, n := f.rewriteScalarExpression(elem.LHS) |
| 137 | rwCount += n |
| 138 | rhs, n := f.rewriteScalarExpression(elem.RHS) |
| 139 | rwCount += n |
| 140 | elements = append(elements, newScalarFilter(elem.Op, lhs, rhs)) |
| 141 | case GroupOperation: |
| 142 | fe, n := f.rewriteFieldExpression(elem.Expression) |
| 143 | rwCount += n |
| 144 | elements = append(elements, newGroupOperation(fe)) |
| 145 | case SpansetOperation: |
| 146 | lhs, n := f.rewriteSpansetExpression(elem.LHS) |
| 147 | rwCount += n |
| 148 | rhs, n := f.rewriteSpansetExpression(elem.RHS) |
| 149 | rwCount += n |
| 150 | elements = append(elements, newSpansetOperation(elem.Op, lhs, rhs)) |
| 151 | case Pipeline: |
| 152 | fe, n := f.rewritePipeline(elem) |
| 153 | rwCount += n |
| 154 | elements = append(elements, fe) |
| 155 | default: |
| 156 | elements = append(elements, elem) |
| 157 | } |
| 158 | } |
| 159 | |
| 160 | return newPipeline(elements...), rwCount |
| 161 | } |
| 162 | |
| 163 | func (f *fieldExpressionRewriter) rewriteSpansetExpression(se SpansetExpression) (SpansetExpression, int) { |
| 164 | switch se := se.(type) { |
no test coverage detected