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)
| 278 | |
| 279 | // autocompleteIter creates an iterator that will collect values for a given attribute/tag. |
| 280 | func 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 |
no test coverage detected