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 }