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

Method KeepGroup

tempodb/encoding/vparquet3/block_traceql.go:2563–2688  ·  view source on GitHub ↗
(res *parquetquery.IteratorResult)

Source from the content-addressed store, hash-verified

2561}
2562
2563func (c *spanCollector) KeepGroup(res *parquetquery.IteratorResult) bool {
2564 var sp *span
2565 // look for existing span first. this occurs on the second pass
2566 for _, e := range res.OtherEntries {
2567 if v, ok := e.Value.(*span); ok {
2568 sp = v
2569 break
2570 }
2571 }
2572
2573 // if not found create a new one
2574 if sp == nil {
2575 sp = getSpan()
2576 sp.rowNum = res.RowNumber
2577 }
2578
2579 for _, e := range res.OtherEntries {
2580 if v, ok := e.Value.(traceql.Static); ok {
2581 sp.addSpanAttr(newSpanAttr(e.Key), v)
2582 }
2583 }
2584
2585 var durationNanos uint64
2586
2587 // Merge all individual columns into the span
2588 for _, kv := range res.Entries {
2589 switch kv.Key {
2590 case columnPathSpanID:
2591 sp.id = kv.Value.ByteArray()
2592 sp.addSpanAttr(traceql.IntrinsicSpanIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray())))
2593 case columnPathSpanParentSpanID:
2594 sp.addSpanAttr(traceql.IntrinsicParentIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray())))
2595 case columnPathSpanStartTime:
2596 sp.startTimeUnixNanos = kv.Value.Uint64()
2597 case columnPathSpanDuration:
2598 durationNanos = kv.Value.Uint64()
2599 sp.durationNanos = durationNanos
2600 sp.addSpanAttr(traceql.IntrinsicDurationAttribute, traceql.NewStaticDuration(time.Duration(durationNanos)))
2601 case columnPathSpanName:
2602 sp.addSpanAttr(traceql.IntrinsicNameAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes())))
2603 case columnPathSpanStatusCode:
2604 // Map OTLP status code back to TraceQL enum.
2605 // For other values, use the raw integer.
2606 var status traceql.Status
2607 switch kv.Value.Uint64() {
2608 case uint64(v1.Status_STATUS_CODE_UNSET):
2609 status = traceql.StatusUnset
2610 case uint64(v1.Status_STATUS_CODE_OK):
2611 status = traceql.StatusOk
2612 case uint64(v1.Status_STATUS_CODE_ERROR):
2613 status = traceql.StatusError
2614 default:
2615 status = traceql.Status(kv.Value.Uint64())
2616 }
2617 sp.addSpanAttr(traceql.IntrinsicStatusAttribute, traceql.NewStaticStatus(status))
2618 case columnPathSpanStatusMessage:
2619 sp.addSpanAttr(traceql.IntrinsicStatusMessageAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes())))
2620 case columnPathSpanKind:

Callers

nothing calls this directly

Calls 15

addSpanAttrMethod · 0.95
attributesMatchedMethod · 0.95
NewStaticStringFunction · 0.92
SpanIDToHexStringFunction · 0.92
NewStaticDurationFunction · 0.92
StatusTypeAlias · 0.92
NewStaticStatusFunction · 0.92
KindTypeAlias · 0.92
NewStaticKindFunction · 0.92
NewStaticIntFunction · 0.92
NewStaticBoolFunction · 0.92
NewStaticFloatFunction · 0.92

Tested by

no test coverage detected