reads

package
v1.9.5 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2021 License: MIT Imports: 21 Imported by: 12

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 (
	// nil sorts lowest
	NilSortLo = []byte{0x00}
	// nil sorts highest
	NilSortHi = []byte{0xff}
)

NilSort values determine the lexicographical order of nil values in the partition key

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 GetWindow added in v1.9.0

func HasFieldValueKey

func HasFieldValueKey(expr influxql.Expr) bool

func IsAscendingGroupAggregate added in v1.9.0

func IsAscendingGroupAggregate(req *datatypes.ReadGroupRequest) bool

IsAscendingGroupAggregate checks if this request is using the `last` aggregate type. It returns true if an ascending cursor should be used (all other conditions) or a descending cursor (when `last` is used).

func IsAscendingWindowAggregate added in v1.9.0

func IsAscendingWindowAggregate(req *datatypes.ReadWindowAggregateRequest) bool

IsAscendingWindowAggregate checks two things: If the request passed in is using the `last` aggregate type, and if it doesn't have a window. If both conditions are met, it returns false, otherwise, it returns true.

func IsTrueBooleanLiteral

func IsTrueBooleanLiteral(expr influxql.Expr) bool

func NewWindowAggregateArrayCursor added in v1.9.0

func NewWindowAggregateArrayCursor(ctx context.Context, agg []*datatypes.Aggregate, window interval.Window, cursor cursors.Cursor) (cursors.Cursor, error)

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 added in v1.8.0

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

	Aggregate() *datatypes.Aggregate
}

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 NewGroupResultSet

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

type KeyMerger added in v1.8.0

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

tagsKeyMerger is responsible for determining a merged set of tag keys

func (*KeyMerger) Clear added in v1.8.0

func (km *KeyMerger) Clear()

func (*KeyMerger) Get added in v1.8.0

func (km *KeyMerger) Get() [][]byte

func (*KeyMerger) MergeKeys added in v1.8.0

func (km *KeyMerger) MergeKeys(in [][]byte)

func (*KeyMerger) MergeTagKeys added in v1.8.0

func (km *KeyMerger) MergeTagKeys(tags models.Tags)

func (*KeyMerger) String added in v1.8.0

func (km *KeyMerger) String() 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 added in v1.7.8

func NewFilteredResultSet(ctx context.Context, start, end int64, seriesCursor SeriesCursor) ResultSet

TODO(jsternberg): The range is [start, end) for this function which is consistent with the documented interface for datatypes.ReadFilterRequest. This function should be refactored to take in a datatypes.ReadFilterRequest similar to the other ResultSet functions.

func NewWindowAggregateResultSet added in v1.9.0

func NewWindowAggregateResultSet(ctx context.Context, req *datatypes.ReadWindowAggregateRequest, cursor SeriesCursor) (ResultSet, error)

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 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