MCPcopy
hub / github.com/grafana/tempo / rewritePipeline

Method rewritePipeline

pkg/traceql/ast_rewriter.go:122–161  ·  view source on GitHub ↗
(p Pipeline)

Source from the content-addressed store, hash-verified

120}
121
122func (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
163func (f *fieldExpressionRewriter) rewriteSpansetExpression(se SpansetExpression) (SpansetExpression, int) {
164 switch se := se.(type) {

Callers 3

RewriteRootMethod · 0.95

Calls 8

newSpansetFilterFunction · 0.85
newScalarFilterFunction · 0.85
newGroupOperationFunction · 0.85
newSpansetOperationFunction · 0.85
newPipelineFunction · 0.85

Tested by

no test coverage detected