reads

package
v2.0.0-beta.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2020 License: MIT Imports: 36 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MaxPointsPerBlock is the maximum number of points in an encoded
	// block in a TSM file. It should match the value in the tsm1
	// package, but we don't want to import it.
	MaxPointsPerBlock = 1000
)

Variables

View Source
var (
	// ErrPartitionKeyOrder means the partition keys for a
	// GroupResultSetStreamReader were incorrectly ordered.
	ErrPartitionKeyOrder = errors.New("invalid partition key order")

	// ErrStreamNoData means the StreamReader repeatedly returned no data
	// when calling Recv
	ErrStreamNoData = errors.New("peekFrame: no data")
)
View Source
var BooleanEmptyArrayCursor cursors.BooleanArrayCursor = &booleanEmptyArrayCursor{}
View Source
var FloatEmptyArrayCursor cursors.FloatArrayCursor = &floatEmptyArrayCursor{}
View Source
var IntegerEmptyArrayCursor cursors.IntegerArrayCursor = &integerEmptyArrayCursor{}
View Source
var StringEmptyArrayCursor cursors.StringArrayCursor = &stringEmptyArrayCursor{}
View Source
var UnsignedEmptyArrayCursor cursors.UnsignedArrayCursor = &unsignedEmptyArrayCursor{}

Functions

func EvalExprBool

func EvalExprBool(expr influxql.Expr, m Valuer) bool

func HasFieldValueKey

func HasFieldValueKey(expr influxql.Expr) bool

func IsTrueBooleanLiteral

func IsTrueBooleanLiteral(expr influxql.Expr) bool

func NewReader

func NewReader(s Store) influxdb.Reader

func NodeToExpr

func NodeToExpr(node *datatypes.Node, remap map[string]string) (influxql.Expr, error)

NodeToExpr transforms a predicate node to an influxql.Expr.

func PredicateToExprString

func PredicateToExprString(p *datatypes.Predicate) string

func ResultSetToLineProtocol

func ResultSetToLineProtocol(wr io.Writer, rs ResultSet) (err error)

ResultSetToLineProtocol transforms rs to line protocol and writes the output to wr.

func RewriteExprRemoveFieldValue

func RewriteExprRemoveFieldValue(expr influxql.Expr) influxql.Expr

func WalkChildren

func WalkChildren(v NodeVisitor, node *datatypes.Node)

func WalkNode

func WalkNode(v NodeVisitor, node *datatypes.Node)

Types

type GroupCursor

type GroupCursor interface {
	// Next advances to the next cursor. Next will return false when there are no
	// more cursors in the current group.
	Next() bool

	// Cursor returns the most recent cursor after a call to Next.
	Cursor() cursors.Cursor

	// Tags returns the tags for the most recent cursor after a call to Next.
	Tags() models.Tags

	// Keys returns the union of all tag key names for all series produced by
	// this GroupCursor.
	Keys() [][]byte

	// PartitionKeyVals returns the values of all tags identified by the
	// keys specified in ReadRequest#GroupKeys. The tag values values will
	// appear in the same order as the GroupKeys.
	//
	// When the datatypes.GroupNone strategy is specified, PartitionKeyVals will
	// be nil.
	PartitionKeyVals() [][]byte

	// Close releases any resources allocated by the GroupCursor.
	Close()

	// Err returns the first error encountered by the GroupCursor.
	Err() error

	Stats() cursors.CursorStats
}

type GroupOption

type GroupOption func(g *groupResultSet)

func GroupOptionNilSortLo

func GroupOptionNilSortLo() GroupOption

GroupOptionNilSortLo configures nil values to be sorted lower than any other value

type GroupResultSet

type GroupResultSet interface {
	// Next advances the GroupResultSet and returns the next GroupCursor. It
	// returns nil if there are no more groups.
	Next() GroupCursor

	// Close releases any resources allocated by the GroupResultSet.
	Close()

	// Err returns the first error encountered by the GroupResultSet.
	Err() error
}

func NewGroupByMergedGroupResultSet

func NewGroupByMergedGroupResultSet(g []GroupResultSet) GroupResultSet

Returns a GroupResultSet that merges results using the datatypes.GroupBy strategy. Each source GroupResultSet in g must be configured using the GroupBy strategy with the same GroupKeys or the results are undefined.

func NewGroupNoneMergedGroupResultSet

func NewGroupNoneMergedGroupResultSet(g []GroupResultSet) GroupResultSet

Returns a GroupResultSet that merges results using the datatypes.GroupNone strategy. Each source GroupResultSet in g must be configured using the GroupNone strategy or the results are undefined.

The GroupNone strategy must merge the partition key and tag keys from each source GroupResultSet when producing its

func NewGroupResultSet

func NewGroupResultSet(ctx context.Context, req *datatypes.ReadGroupRequest, newCursorFn func() (SeriesCursor, error), opts ...GroupOption) GroupResultSet

type GroupResultSetStreamReader

type GroupResultSetStreamReader struct {
	// contains filtered or unexported fields
}

func NewGroupResultSetStreamReader

func NewGroupResultSetStreamReader(stream StreamReader) *GroupResultSetStreamReader

func (*GroupResultSetStreamReader) Close

func (r *GroupResultSetStreamReader) Close()

func (*GroupResultSetStreamReader) Err

func (*GroupResultSetStreamReader) Next

func (*GroupResultSetStreamReader) Peek

func (r *GroupResultSetStreamReader) Peek()

Peek reads the next frame on the underlying stream-reader if there is one

type MergedStringIterator

type MergedStringIterator struct {
	// contains filtered or unexported fields
}

MergedStringIterator merges multiple storage.StringIterators into one. It sorts and deduplicates adjacent values, so the output is sorted iff all inputs are sorted. If all inputs are not sorted, then output order and deduplication are undefined and unpleasant.

func NewMergedStringIterator

func NewMergedStringIterator(iterators []cursors.StringIterator) *MergedStringIterator

func (*MergedStringIterator) Next

func (msi *MergedStringIterator) Next() bool

func (*MergedStringIterator) Stats

func (*MergedStringIterator) Value

func (msi *MergedStringIterator) Value() string

type NodeVisitor

type NodeVisitor interface {
	Visit(*datatypes.Node) NodeVisitor
}

NodeVisitor can be called by Walk to traverse the Node hierarchy. The Visit() function is called once per node.

type ResponseStream

type ResponseStream interface {
	Send(*datatypes.ReadResponse) error
	// SetTrailer sets the trailer metadata which will be sent with the RPC status.
	// When called more than once, all the provided metadata will be merged.
	SetTrailer(metadata.MD)
}

type ResponseWriter

type ResponseWriter struct {
	// contains filtered or unexported fields
}

func NewResponseWriter

func NewResponseWriter(stream ResponseStream, hints datatypes.HintFlags) *ResponseWriter

func (*ResponseWriter) Err

func (w *ResponseWriter) Err() error

func (*ResponseWriter) Flush

func (w *ResponseWriter) Flush()

func (*ResponseWriter) WriteGroupResultSet

func (w *ResponseWriter) WriteGroupResultSet(rs GroupResultSet) error

func (*ResponseWriter) WriteResultSet

func (w *ResponseWriter) WriteResultSet(rs ResultSet) error

func (*ResponseWriter) WrittenN

func (w *ResponseWriter) WrittenN() int

WrittenN returns the number of values written to the response stream.

type ResultSet

type ResultSet interface {
	// Next advances the ResultSet to the next cursor. It returns false
	// when there are no more cursors.
	Next() bool

	// Cursor returns the most recent cursor after a call to Next.
	Cursor() cursors.Cursor

	// Tags returns the tags for the most recent cursor after a call to Next.
	Tags() models.Tags

	// Close releases any resources allocated by the ResultSet.
	Close()

	// Err returns the first error encountered by the ResultSet.
	Err() error

	Stats() cursors.CursorStats
}

func NewFilteredResultSet

func NewFilteredResultSet(ctx context.Context, req *datatypes.ReadFilterRequest, cur SeriesCursor) ResultSet

func NewMergedResultSet

func NewMergedResultSet(results []ResultSet) ResultSet

NewMergedResultSet combines the results into a single ResultSet, producing keys in ascending lexicographical order. It requires all input results are ordered.

func NewSequenceResultSet

func NewSequenceResultSet(results []ResultSet) ResultSet

NewSequenceResultSet combines results into a single ResultSet, draining each ResultSet in order before moving to the next.

type ResultSetStreamReader

type ResultSetStreamReader struct {
	// contains filtered or unexported fields
}

func NewResultSetStreamReader

func NewResultSetStreamReader(stream StreamReader) *ResultSetStreamReader

func (*ResultSetStreamReader) Close

func (r *ResultSetStreamReader) Close()

func (*ResultSetStreamReader) Cursor

func (r *ResultSetStreamReader) Cursor() cursors.Cursor

func (*ResultSetStreamReader) Err

func (r *ResultSetStreamReader) Err() error

func (*ResultSetStreamReader) Next

func (r *ResultSetStreamReader) Next() bool

func (*ResultSetStreamReader) Peek

func (r *ResultSetStreamReader) Peek()

Peek reads the next frame on the underlying stream-reader if there is one

func (*ResultSetStreamReader) Stats

func (*ResultSetStreamReader) Tags

func (r *ResultSetStreamReader) Tags() models.Tags

type SeriesCursor

type SeriesCursor interface {
	Close()
	Next() *SeriesRow
	Err() error
}

func NewLimitSeriesCursor

func NewLimitSeriesCursor(ctx context.Context, cur SeriesCursor, n, o int64) SeriesCursor

type SeriesRow

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 StorageReadClient

type StorageReadClient struct {
	// contains filtered or unexported fields
}

StorageReadClient adapts a grpc client to implement the cursors.Statistics interface and read the statistics from the gRPC trailer.

func NewStorageReadClient

func NewStorageReadClient(client StreamClient) *StorageReadClient

NewStorageReadClient returns a new StorageReadClient which implements StreamReader and reads the gRPC trailer to return CursorStats.

func (*StorageReadClient) Recv

func (rc *StorageReadClient) Recv() (res *datatypes.ReadResponse, err error)

func (*StorageReadClient) Stats

func (rc *StorageReadClient) Stats() (stats cursors.CursorStats)

type Store

type Store interface {
	ReadFilter(ctx context.Context, req *datatypes.ReadFilterRequest) (ResultSet, error)
	ReadGroup(ctx context.Context, req *datatypes.ReadGroupRequest) (GroupResultSet, error)

	TagKeys(ctx context.Context, req *datatypes.TagKeysRequest) (cursors.StringIterator, error)
	TagValues(ctx context.Context, req *datatypes.TagValuesRequest) (cursors.StringIterator, error)

	GetSource(orgID, bucketID uint64) proto.Message
}

type StreamClient

type StreamClient interface {
	StreamReader
	grpc.ClientStream
}

type StreamReader

type StreamReader interface {
	Recv() (*datatypes.ReadResponse, error)
}

type StringIteratorStream

type StringIteratorStream interface {
	Send(*datatypes.StringValuesResponse) error
}

type StringIteratorStreamReader

type StringIteratorStreamReader struct {
	// contains filtered or unexported fields
}

func NewStringIteratorStreamReader

func NewStringIteratorStreamReader(stream StringValuesStreamReader) *StringIteratorStreamReader

func (*StringIteratorStreamReader) Err

func (*StringIteratorStreamReader) Next

func (r *StringIteratorStreamReader) Next() bool

func (*StringIteratorStreamReader) Stats

func (*StringIteratorStreamReader) Value

type StringIteratorWriter

type StringIteratorWriter struct {
	// contains filtered or unexported fields
}

func NewStringIteratorWriter

func NewStringIteratorWriter(stream StringIteratorStream) *StringIteratorWriter

func (*StringIteratorWriter) Err

func (w *StringIteratorWriter) Err() error

func (*StringIteratorWriter) Flush

func (w *StringIteratorWriter) Flush()

func (*StringIteratorWriter) WriteStringIterator

func (w *StringIteratorWriter) WriteStringIterator(si cursors.StringIterator) error

func (*StringIteratorWriter) WrittenN

func (w *StringIteratorWriter) WrittenN() int

type StringValuesStreamReader

type StringValuesStreamReader interface {
	Recv() (*datatypes.StringValuesResponse, error)
}

type Valuer

type Valuer interface {
	// Value returns the value and existence flag for a given key.
	Value(key string) (interface{}, bool)
}

Valuer is the interface that wraps the Value() method.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL