Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AliasedExpression ¶
type AliasedExpression struct { Pos lexer.Position Expression *Expression `parser:"@@"` Unit *units.Unit `parser:"( @@ )?"` As string `parser:"( 'as' @String )?"` }
AliasedExpression handles expression AS name to create aliases
type Expression ¶
type Expression struct { Pos lexer.Position Function *Function `parser:"( @@"` Metric *Metric `parser:"| @@ )"` Using string `parser:"( 'using' @String"` Modifier []*ExpressionModifier `parser:"| (@@)+ )?"` }
Expression handles function calls or direct metric values
type ExpressionModifier ¶
type ExpressionModifier struct { Pos lexer.Position Range *QueryRange `parser:"( @@"` Offset *time.Duration `parser:"| 'offset' @@ )"` }
type Function ¶
type Function struct { Pos lexer.Position Name string `parser:"@Ident"` Expressions []*Expression `parser:"'(' (@@ (',' @@)*)? ')'"` }
Function handles function calls
type Histogram ¶
type Histogram struct { Pos lexer.Position Expression *AliasedExpression `parser:"'histogram' @@"` }
type Metric ¶
type Metric struct { Pos lexer.Position Metric []string `parser:"@Ident ( '.' @Ident )*"` Name string }
Metric handles a metric reference
type Query ¶
type Query struct { Pos lexer.Position QueryRange *QueryRange `parser:"@@"` Using *UsingDefinitions `parser:"(@@)?"` Histogram []*Histogram `parser:"( ( @@ )+"` WindRose []*WindRose `parser:"| ( @@ )+"` Limit int `parser:"| ( 'limit' @Int )?"` Select []*Select `parser:" ( @@ )+ )"` }
type QueryRange ¶
type QueryRange struct { Pos lexer.Position At *time2.Time `parser:"( 'at' @@"` // AT time for a specific time From *time2.Time `parser:"| 'from' @@"` // FROM time For *time2.Duration `parser:" 'for' @@ "` // Duration from FROM Start *time2.Time `parser:"| 'between' @@"` // Between a start time End *time2.Time `parser:" 'and' @@ )"` // and an end time Every *time2.Duration `parser:"( 'every' @@ )?"` // Every duration time }
QueryRange defines the time range to query
func (*QueryRange) IsRow ¶
func (a *QueryRange) IsRow() bool
func (*QueryRange) Range ¶
func (a *QueryRange) Range() api.Range
func (*QueryRange) SetTime ¶
func (a *QueryRange) SetTime(t time.Time, every time.Duration, v QueryVisitor) error
type QueryVisitor ¶
type QueryVisitor interface { time.TimeVisitor units.UnitsVisitor Query(*Query) error Select(*Select) error SelectExpression(*SelectExpression) error AliasedExpression(*AliasedExpression) error Expression(*Expression) error ExpressionModifier(*ExpressionModifier) error Function(*Function) error Metric(*Metric) error QueryRange(*QueryRange) error UsingDefinitions(*UsingDefinitions) error UsingDefinition(*UsingDefinition) error Histogram(*Histogram) error WindRose(*WindRose) error }
type Select ¶
type Select struct { Pos lexer.Position Expression *SelectExpression `parser:"'select' @@"` Limit int `parser:"( 'limit' @Int )?"` }
type SelectExpression ¶
type SelectExpression struct { Pos lexer.Position Expressions []*AliasedExpression `parser:"@@ ( ',' @@ )*"` }
type UsingDefinition ¶
type UsingDefinition struct { Pos lexer.Position Name string `parser:"@String 'as'"` Modifier []*ExpressionModifier `parser:"(@@)+"` }
type UsingDefinitions ¶
type UsingDefinitions struct { Pos lexer.Position Defs []*UsingDefinition `parser:" 'declare' @@ (',' @@)* "` }
type WindRose ¶
type WindRose struct { Pos lexer.Position Degrees *Expression `parser:"'windrose' @@"` Speed *Expression `parser:"',' @@"` Options []WindRoseOption `parser:"('as' @@ (',' @@)* )?"` }
Click to show internal directories.
Click to hide internal directories.