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

Function autocompleteIter

tempodb/encoding/vparquet5/block_autocomplete.go:280–336  ·  tempodb/encoding/vparquet5/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

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

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