func (s *RaftServer) runContinuousQuery(db string, query *parser.SelectQuery, start time.Time, end time.Time) { adminName := s.clusterConfig.GetClusterAdmins()[0] clusterAdmin := s.clusterConfig.GetClusterAdmin(adminName) intoClause := query.GetIntoClause() targetName := intoClause.Target.Name queryString := query.GetQueryStringWithTimesAndNoIntoClause(start, end) f := func(series *protocol.Series) error { return s.coordinator.InterpolateValuesAndCommit(query.GetQueryString(), db, series, targetName, true) } writer := NewContinuousQueryWriter(f) s.coordinator.RunQuery(clusterAdmin, db, queryString, writer) }
// Create and return a new JoinEngine given the shards that will be // processed and the query func NewJoinEngine(shards []uint32, query *parser.SelectQuery, next Processor) Processor { tableNames := query.GetFromClause().Names name := query.GetFromClause().GetString() log4go.Debug("NewJoinEngine: shards=%v, query=%s, next=%s, tableNames=%v, name=%s", shards, query.GetQueryString(), next.Name(), tableNames, name) joinEngine := &JoinEngine{ next: next, name: name, tablesState: make([]joinEngineState, len(tableNames)), tableIdx: make(map[string]int, len(tableNames)), query: query, pts: 0, } for i, tn := range tableNames { alias := tn.GetAlias() joinEngine.tablesState[i] = joinEngineState{} joinEngine.tableIdx[alias] = i } mergeEngine := NewCommonMergeEngine(shards, false, query.Ascending, joinEngine) return mergeEngine }