(res *parquetquery.IteratorResult)
| 3202 | } |
| 3203 | |
| 3204 | func (c *spanCollector) KeepGroup(res *parquetquery.IteratorResult) bool { |
| 3205 | var sp *span |
| 3206 | // look for existing span first. this occurs on the second pass |
| 3207 | for _, e := range res.OtherEntries { |
| 3208 | if v, ok := e.Value.(*span); ok { |
| 3209 | sp = v |
| 3210 | break |
| 3211 | } |
| 3212 | } |
| 3213 | |
| 3214 | // if not found create a new one |
| 3215 | if sp == nil { |
| 3216 | sp = getSpan() |
| 3217 | sp.rowNum = res.RowNumber |
| 3218 | } |
| 3219 | |
| 3220 | for _, e := range res.OtherEntries { |
| 3221 | switch v := e.Value.(type) { |
| 3222 | case traceql.Static: |
| 3223 | sp.addSpanAttr(newSpanAttr(e.Key), v) |
| 3224 | case *event: |
| 3225 | sp.setEventAttrs(v.attrs) |
| 3226 | putEvent(v) |
| 3227 | case *link: |
| 3228 | sp.setLinkAttrs(v.attrs) |
| 3229 | putLink(v) |
| 3230 | } |
| 3231 | } |
| 3232 | |
| 3233 | var durationNanos uint64 |
| 3234 | |
| 3235 | // Merge all individual columns into the span |
| 3236 | for _, kv := range res.Entries { |
| 3237 | switch kv.Key { |
| 3238 | case columnPathSpanID: |
| 3239 | sp.id = kv.Value.ByteArray() |
| 3240 | sp.addSpanAttr(traceql.IntrinsicSpanIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray()))) |
| 3241 | case columnPathSpanParentSpanID: |
| 3242 | sp.addSpanAttr(traceql.IntrinsicParentIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray()))) |
| 3243 | case columnPathSpanStartTime: |
| 3244 | sp.startTimeUnixNanos = kv.Value.Uint64() |
| 3245 | case columnPathSpanStartRounded15: |
| 3246 | sp.startTimeUnixNanos = intervalMapper15Seconds.TimestampOf(int(kv.Value.Int64())) |
| 3247 | case columnPathSpanStartRounded60: |
| 3248 | sp.startTimeUnixNanos = intervalMapper60Seconds.TimestampOf(int(kv.Value.Int64())) |
| 3249 | case columnPathSpanStartRounded300: |
| 3250 | sp.startTimeUnixNanos = intervalMapper300Seconds.TimestampOf(int(kv.Value.Int64())) |
| 3251 | case columnPathSpanStartRounded3600: |
| 3252 | sp.startTimeUnixNanos = intervalMapper3600Seconds.TimestampOf(int(kv.Value.Int64())) |
| 3253 | case columnPathSpanDuration: |
| 3254 | durationNanos = kv.Value.Uint64() |
| 3255 | sp.durationNanos = durationNanos |
| 3256 | sp.addSpanAttr(traceql.IntrinsicDurationAttribute, traceql.NewStaticDuration(time.Duration(durationNanos))) |
| 3257 | case ColumnPathSpanName: |
| 3258 | sp.addSpanAttr(traceql.IntrinsicNameAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes()))) |
| 3259 | case columnPathSpanStatusCode: |
| 3260 | sp.addSpanAttr(traceql.IntrinsicStatusAttribute, traceql.NewStaticStatus(otlpStatusToTraceqlStatus(kv.Value.Uint64()))) |
| 3261 | case columnPathSpanStatusMessage: |
nothing calls this directly
no test coverage detected