(res *parquetquery.IteratorResult)
| 3121 | } |
| 3122 | |
| 3123 | func (c *spanCollector) KeepGroup(res *parquetquery.IteratorResult) bool { |
| 3124 | var sp *span |
| 3125 | // look for existing span first. this occurs on the second pass |
| 3126 | for _, e := range res.OtherEntries { |
| 3127 | if v, ok := e.Value.(*span); ok { |
| 3128 | sp = v |
| 3129 | break |
| 3130 | } |
| 3131 | } |
| 3132 | |
| 3133 | // if not found create a new one |
| 3134 | if sp == nil { |
| 3135 | sp = getSpan() |
| 3136 | sp.rowNum = res.RowNumber |
| 3137 | } |
| 3138 | |
| 3139 | for _, e := range res.OtherEntries { |
| 3140 | switch v := e.Value.(type) { |
| 3141 | case traceql.Static: |
| 3142 | sp.addSpanAttr(newSpanAttr(e.Key), v) |
| 3143 | case *event: |
| 3144 | sp.setEventAttrs(v.attrs) |
| 3145 | putEvent(v) |
| 3146 | case *link: |
| 3147 | sp.setLinkAttrs(v.attrs) |
| 3148 | putLink(v) |
| 3149 | } |
| 3150 | } |
| 3151 | |
| 3152 | var durationNanos uint64 |
| 3153 | |
| 3154 | // Merge all individual columns into the span |
| 3155 | for _, kv := range res.Entries { |
| 3156 | switch kv.Key { |
| 3157 | case columnPathSpanID: |
| 3158 | sp.id = kv.Value.ByteArray() |
| 3159 | sp.addSpanAttr(traceql.IntrinsicSpanIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray()))) |
| 3160 | case columnPathSpanParentSpanID: |
| 3161 | sp.addSpanAttr(traceql.IntrinsicParentIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray()))) |
| 3162 | case columnPathSpanStartTime: |
| 3163 | sp.startTimeUnixNanos = kv.Value.Uint64() |
| 3164 | case columnPathSpanDuration: |
| 3165 | durationNanos = kv.Value.Uint64() |
| 3166 | sp.durationNanos = durationNanos |
| 3167 | sp.addSpanAttr(traceql.IntrinsicDurationAttribute, traceql.NewStaticDuration(time.Duration(durationNanos))) |
| 3168 | case ColumnPathSpanName: |
| 3169 | sp.addSpanAttr(traceql.IntrinsicNameAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes()))) |
| 3170 | case columnPathSpanStatusCode: |
| 3171 | sp.addSpanAttr(traceql.IntrinsicStatusAttribute, traceql.NewStaticStatus(otlpStatusToTraceqlStatus(kv.Value.Uint64()))) |
| 3172 | case columnPathSpanStatusMessage: |
| 3173 | sp.addSpanAttr(traceql.IntrinsicStatusMessageAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes()))) |
| 3174 | case columnPathSpanKind: |
| 3175 | sp.addSpanAttr(traceql.IntrinsicKindAttribute, traceql.NewStaticKind(otlpKindToTraceqlKind(kv.Value.Uint64()))) |
| 3176 | case columnPathSpanParentID: |
| 3177 | sp.nestedSetParent = kv.Value.Int32() |
| 3178 | if c.nestedSetParentExplicit { |
| 3179 | sp.addSpanAttr(traceql.IntrinsicNestedSetParentAttribute, traceql.NewStaticInt(int(kv.Value.Int32()))) |
| 3180 | } |
nothing calls this directly
no test coverage detected