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

Function rawToResults

tempodb/encoding/vparquet5/block_search.go:330–365  ·  view source on GitHub ↗
(ctx context.Context, pf *parquet.File, rgs []parquet.RowGroup, rowNumbers []pq.RowNumber)

Source from the content-addressed store, hash-verified

328}
329
330func rawToResults(ctx context.Context, pf *parquet.File, rgs []parquet.RowGroup, rowNumbers []pq.RowNumber) ([]*tempopb.TraceSearchMetadata, error) {
331 makeIter := makeIterFunc(ctx, rgs, pf)
332
333 results := []*tempopb.TraceSearchMetadata{}
334 iter2 := pq.NewJoinIterator(DefinitionLevelTrace, []pq.Iterator{
335 &rowNumberIterator{rowNumbers: rowNumbers},
336 makeIter("TraceID", nil, "TraceID"),
337 makeIter("RootServiceName", nil, "RootServiceName"),
338 makeIter("RootSpanName", nil, "RootSpanName"),
339 makeIter("StartTimeUnixNano", nil, "StartTimeUnixNano"),
340 makeIter("DurationNano", nil, "DurationNano"),
341 }, nil)
342 defer iter2.Close()
343
344 for {
345 match, err := iter2.Next()
346 if err != nil {
347 return nil, fmt.Errorf("rawToResults next failed: %w", err)
348 }
349 if match == nil {
350 break
351 }
352
353 matchMap := match.ToMap()
354 result := &tempopb.TraceSearchMetadata{
355 TraceID: util.TraceIDToHexString(matchMap["TraceID"][0].Bytes()),
356 RootServiceName: matchMap["RootServiceName"][0].String(),
357 RootTraceName: matchMap["RootSpanName"][0].String(),
358 StartTimeUnixNano: matchMap["StartTimeUnixNano"][0].Uint64(),
359 DurationMs: uint32(matchMap["DurationNano"][0].Int64() / int64(time.Millisecond)),
360 }
361 results = append(results, result)
362 }
363
364 return results, nil
365}
366
367// makeIterFn is a helper to create an iterator, that abstracts away context like file and row groups.
368type makeIterFn func(columnName string, predicate pq.Predicate, selectAs string) pq.Iterator

Callers 1

searchParquetFileFunction · 0.70

Calls 7

CloseMethod · 0.95
NextMethod · 0.95
TraceIDToHexStringFunction · 0.92
ToMapMethod · 0.80
BytesMethod · 0.80
makeIterFuncFunction · 0.70
StringMethod · 0.45

Tested by

no test coverage detected