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

Function rawToResults

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

Source from the content-addressed store, hash-verified

310}
311
312func rawToResults(ctx context.Context, pf *parquet.File, rgs []parquet.RowGroup, rowNumbers []pq.RowNumber) ([]*tempopb.TraceSearchMetadata, error) {
313 makeIter := makeIterFunc(ctx, rgs, pf)
314
315 results := []*tempopb.TraceSearchMetadata{}
316 iter2 := pq.NewJoinIterator(DefinitionLevelTrace, []pq.Iterator{
317 &rowNumberIterator{rowNumbers: rowNumbers},
318 makeIter("TraceID", nil, "TraceID"),
319 makeIter("RootServiceName", nil, "RootServiceName"),
320 makeIter("RootSpanName", nil, "RootSpanName"),
321 makeIter("StartTimeUnixNano", nil, "StartTimeUnixNano"),
322 makeIter("DurationNano", nil, "DurationNano"),
323 }, nil)
324 defer iter2.Close()
325
326 for {
327 match, err := iter2.Next()
328 if err != nil {
329 return nil, fmt.Errorf("rawToResults next failed: %w", err)
330 }
331 if match == nil {
332 break
333 }
334
335 matchMap := match.ToMap()
336 result := &tempopb.TraceSearchMetadata{
337 TraceID: util.TraceIDToHexString(matchMap["TraceID"][0].Bytes()),
338 RootServiceName: matchMap["RootServiceName"][0].String(),
339 RootTraceName: matchMap["RootSpanName"][0].String(),
340 StartTimeUnixNano: matchMap["StartTimeUnixNano"][0].Uint64(),
341 DurationMs: uint32(matchMap["DurationNano"][0].Int64() / int64(time.Millisecond)),
342 }
343 results = append(results, result)
344 }
345
346 return results, nil
347}
348
349// makeIterFn is a helper to create an iterator, that abstracts away context like file and row groups.
350type 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