text: package reads
  
  import (
  	"context"
  
  	"github.com/influxdata/influxdb/v2/models"
  	"github.com/influxdata/influxdb/v2/tsdb/cursors"
  	"github.com/influxdata/influxql"
  )
  
  type SeriesCursor interface {
  	Close()
  	Next() *SeriesRow
  	Err() error
  }
  
  type SeriesRow struct {
  	SortKey    []byte
  	Name       []byte      // measurement name
  	SeriesTags models.Tags // unmodified series tags
  	Tags       models.Tags
  	Field      string
  	Query      cursors.CursorIterators
  	ValueCond  influxql.Expr
  }
  
  type limitSeriesCursor struct {
  	SeriesCursor
  	n, o, c int64
  }
  
  func NewLimitSeriesCursor(ctx context.Context, cur SeriesCursor, n, o int64) SeriesCursor {
  	return &limitSeriesCursor{SeriesCursor: cur, o: o, n: n}
  }
  
  func (c *limitSeriesCursor) Next() *SeriesRow {
  	if c.o > 0 {
  		for i := int64(0); i < c.o; i++ {
  			if c.SeriesCursor.Next() == nil {
  				break
  			}
  		}
  		c.o = 0
  	}
  
  	if c.c >= c.n {
  		return nil
  	}
  	c.c++
  	return c.SeriesCursor.Next()
  }
  