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

Function autocompleteIter

tempodb/encoding/vparquet4/block_autocomplete.go:268–324  ·  tempodb/encoding/vparquet4/block_autocomplete.go::autocompleteIter

autocompleteIter creates an iterator that will collect values for a given attribute/tag.

(ctx context.Context, tr tagRequest, pf *parquet.File, opts common.SearchOptions, dc backend.DedicatedColumns)

Source from the content-addressed store, hash-verified

266
267// autocompleteIter creates an iterator that will collect values for a given attribute/tag.
268func autocompleteIter(ctx context.Context, tr tagRequest, pf *parquet.File, opts common.SearchOptions, dc backend.DedicatedColumns) (parquetquery.Iterator, error) {
269 // categorizeConditions conditions into span-level or resource-level
270 catConditions, _, err := categorizeConditions(tr.conditions)
271 if err != nil {
272 return nil, err
273 }
274
275 rgs := rowGroupsFromFile(pf, opts)
276 makeIter := makeIterFunc(ctx, rgs, pf)
277 makeNilIter := makeNilIterFunc(ctx, rgs, pf)
278
279 var currentIter parquetquery.Iterator
280
281 if len(catConditions.event) > 0 || tr.keysRequested(traceql.AttributeScopeEvent) {
282 currentIter, err = createDistinctEventIterator(makeIter, makeNilIter, tr, currentIter, catConditions.event)
283 if err != nil {
284 return nil, errors.Wrap(err, "creating event iterator")
285 }
286 }
287
288 if len(catConditions.link) > 0 || tr.keysRequested(traceql.AttributeScopeLink) {
289 currentIter, err = createDistinctLinkIterator(makeIter, makeNilIter, tr, currentIter, catConditions.link)
290 if err != nil {
291 return nil, errors.Wrap(err, "creating link iterator")
292 }
293 }
294
295 if len(catConditions.span) > 0 || tr.keysRequested(traceql.AttributeScopeSpan) {
296 currentIter, err = createDistinctSpanIterator(makeIter, makeNilIter, tr, currentIter, catConditions.span, dc)
297 if err != nil {
298 return nil, errors.Wrap(err, "creating span iterator")
299 }
300 }
301
302 if len(catConditions.instrumentation) > 0 || tr.keysRequested(traceql.AttributeScopeInstrumentation) {
303 currentIter, err = createDistinctScopeIterator(makeIter, makeNilIter, tr, currentIter, catConditions.instrumentation)
304 if err != nil {
305 return nil, errors.Wrap(err, "creating instrumentation iterator")
306 }
307 }
308
309 if len(catConditions.resource) > 0 || tr.keysRequested(traceql.AttributeScopeResource) {
310 currentIter, err = createDistinctResourceIterator(makeIter, makeNilIter, tr, currentIter, catConditions.resource, dc)
311 if err != nil {
312 return nil, errors.Wrap(err, "creating resource iterator")
313 }
314 }
315
316 if len(catConditions.trace) > 0 {
317 currentIter, err = createDistinctTraceIterator(makeIter, tr, currentIter, catConditions.trace)
318 if err != nil {
319 return nil, errors.Wrap(err, "creating trace iterator")
320 }
321 }
322
323 return currentIter, nil
324}
325

Callers 4

FetchTagNamesMethod · 0.70
FetchTagValuesMethod · 0.70
FetchTagValuesMethod · 0.70
FetchTagNamesMethod · 0.70

Calls 12

categorizeConditionsFunction · 0.70
rowGroupsFromFileFunction · 0.70
makeIterFuncFunction · 0.70
makeNilIterFuncFunction · 0.70
WrapMethod · 0.65
keysRequestedMethod · 0.45

Tested by

no test coverage detected