Documentation
¶
Index ¶
- Constants
- Variables
- func EvalExprBool(expr influxql.Expr, m Valuer) bool
- func GetWindow(req *datatypes.ReadWindowAggregateRequest) (interval.Window, error)
- func HasFieldValueKey(expr influxql.Expr) bool
- func IsAscendingGroupAggregate(req *datatypes.ReadGroupRequest) bool
- func IsAscendingWindowAggregate(req *datatypes.ReadWindowAggregateRequest) bool
- func IsTrueBooleanLiteral(expr influxql.Expr) bool
- func NewWindowAggregateArrayCursor(ctx context.Context, agg []*datatypes.Aggregate, window interval.Window, ...) (cursors.Cursor, error)
- func NodeToExpr(node *datatypes.Node, remap map[string]string) (influxql.Expr, error)
- func PredicateToExprString(p *datatypes.Predicate) string
- func ResultSetToLineProtocol(wr io.Writer, rs ResultSet) (err error)
- func RewriteExprRemoveFieldValue(expr influxql.Expr) influxql.Expr
- func WalkChildren(v NodeVisitor, node *datatypes.Node)
- func WalkNode(v NodeVisitor, node *datatypes.Node)
- type GroupCursor
- type GroupOption
- type GroupResultSet
- type KeyMerger
- type NodeVisitor
- type ResponseStream
- type ResponseWriter
- type ResultSet
- type SeriesCursor
- type SeriesRow
- type Store
- type Valuer
Constants ¶
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 ¶
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
var BooleanEmptyArrayCursor cursors.BooleanArrayCursor = &booleanEmptyArrayCursor{}
var FloatEmptyArrayCursor cursors.FloatArrayCursor = &floatEmptyArrayCursor{}
var IntegerEmptyArrayCursor cursors.IntegerArrayCursor = &integerEmptyArrayCursor{}
var StringEmptyArrayCursor cursors.StringArrayCursor = &stringEmptyArrayCursor{}
var UnsignedEmptyArrayCursor cursors.UnsignedArrayCursor = &unsignedEmptyArrayCursor{}
Functions ¶
func GetWindow ¶ added in v1.9.0
func GetWindow(req *datatypes.ReadWindowAggregateRequest) (interval.Window, error)
func HasFieldValueKey ¶
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 NewWindowAggregateArrayCursor ¶ added in v1.9.0
func NodeToExpr ¶
NodeToExpr transforms a predicate node to an influxql.Expr.
func PredicateToExprString ¶
func ResultSetToLineProtocol ¶ added in v1.8.0
ResultSetToLineProtocol transforms rs to line protocol and writes the output to wr.
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) MergeTagKeys ¶ added in v1.8.0
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 ¶
func NewLimitSeriesCursor ¶
func NewLimitSeriesCursor(ctx context.Context, cur SeriesCursor, n, o int64) SeriesCursor
type Store ¶
type Store interface {
ReadFilter(ctx context.Context, req *datatypes.ReadFilterRequest) (ResultSet, error)
ReadGroup(ctx context.Context, req *datatypes.ReadGroupRequest) (GroupResultSet, error)
WindowAggregate(ctx context.Context, req *datatypes.ReadWindowAggregateRequest) (ResultSet, error)
TagKeys(ctx context.Context, req *datatypes.TagKeysRequest) (cursors.StringIterator, error)
TagValues(ctx context.Context, req *datatypes.TagValuesRequest) (cursors.StringIterator, error)
GetSource(db, rp string) proto.Message
}