influxdb/engine/engine.go

29 lines
799 B
Go
Raw Normal View History

2013-10-09 18:54:47 +00:00
package engine
import "github.com/influxdb/influxdb/parser"
2013-10-09 18:54:47 +00:00
func NewQueryEngine(next Processor, query *parser.SelectQuery) (Processor, error) {
limit := query.Limit
var engine Processor = NewPassthroughEngineWithLimit(next, 1, limit)
var err error
if query.HasAggregates() {
engine, err = NewAggregatorEngine(query, engine)
2014-08-28 21:35:05 +00:00
} else if query.ContainsArithmeticOperators() {
engine, err = NewArithmeticEngine(query, engine)
2014-02-18 23:29:35 +00:00
}
fromClause := query.GetFromClause()
if fromClause.Type == parser.FromClauseMerge {
engine = NewMergeEngine(fromClause.Names[0].Name.Name, fromClause.Names[1].Name.Name, query.Ascending, engine)
} else if fromClause.Type == parser.FromClauseInnerJoin {
engine = NewJoinEngine(query, engine)
}
2014-03-09 03:28:54 +00:00
if err != nil {
return nil, err
2014-03-09 03:28:54 +00:00
}
return engine, nil
2014-03-09 03:28:54 +00:00
}