| 1461 | var _ traceql.SpansetIterator = (*mergeSpansetIterator)(nil) |
| 1462 | |
| 1463 | func (i *mergeSpansetIterator) Next(ctx context.Context) (*traceql.Spanset, error) { |
| 1464 | for len(i.iters) > 0 { |
| 1465 | spanset, err := i.iters[0].Next(ctx) |
| 1466 | if err != nil { |
| 1467 | return nil, err |
| 1468 | } |
| 1469 | if spanset == nil { |
| 1470 | // This iter is exhausted, pop it |
| 1471 | i.iters[0].Close() |
| 1472 | i.iters = i.iters[1:] |
| 1473 | continue |
| 1474 | } |
| 1475 | return spanset, nil |
| 1476 | } |
| 1477 | |
| 1478 | return nil, nil |
| 1479 | } |
| 1480 | |
| 1481 | func (i *mergeSpansetIterator) Close() { |
| 1482 | // Close any outstanding iters |