net.esper.eql.core
Class ResultSetProcessorAggregateGrouped

java.lang.Object
  extended by net.esper.eql.core.ResultSetProcessorAggregateGrouped
All Implemented Interfaces:
ResultSetProcessor

public class ResultSetProcessorAggregateGrouped
extends Object
implements ResultSetProcessor

Result-set processor for the aggregate-grouped case: there is a group-by and one or more non-aggregation event properties in the select clause are not listed in the group by, and there are aggregation functions.

This processor does perform grouping by computing MultiKey group-by keys for each row. The processor generates one row for each event entering (new event) and one row for each event leaving (old event).

Aggregation state is a table of rows held by ${AggregationService} where the row key is the group-by MultiKey.


Constructor Summary
ResultSetProcessorAggregateGrouped(SelectExprProcessor selectExprProcessor, OrderByProcessor orderByProcessor, AggregationService aggregationService, List<ExprNode> groupKeyNodes, ExprNode optionalHavingNode, boolean isOutputLimiting, boolean isOutputLimitLastOnly)
          Ctor.
 
Method Summary
 EventType getResultEventType()
          Returns the event type of processed results.
 Pair<EventBean[],EventBean[]> processJoinResult(Set<MultiKey<EventBean>> newEvents, Set<MultiKey<EventBean>> oldEvents)
          For use by joins posting their result, process the event rows that are entered and removed (new and old events).
 Pair<EventBean[],EventBean[]> processViewResult(EventBean[] newData, EventBean[] oldData)
          For use by views posting their result, process the event rows that are entered and removed (new and old events).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResultSetProcessorAggregateGrouped

public ResultSetProcessorAggregateGrouped(SelectExprProcessor selectExprProcessor,
                                          OrderByProcessor orderByProcessor,
                                          AggregationService aggregationService,
                                          List<ExprNode> groupKeyNodes,
                                          ExprNode optionalHavingNode,
                                          boolean isOutputLimiting,
                                          boolean isOutputLimitLastOnly)
Ctor.

Parameters:
selectExprProcessor - - for processing the select expression and generting the final output rows
orderByProcessor - - for sorting outgoing events according to the order-by clause
aggregationService - - handles aggregation
groupKeyNodes - - list of group-by expression nodes needed for building the group-by keys
optionalHavingNode - - expression node representing validated HAVING clause, or null if none given. Aggregation functions in the having node must have been pointed to the AggregationService for evaluation.
isOutputLimiting - - true to indicate that we limit output
isOutputLimitLastOnly - - true to indicate that we limit output to the last event
Method Detail

getResultEventType

public EventType getResultEventType()
Description copied from interface: ResultSetProcessor
Returns the event type of processed results.

Specified by:
getResultEventType in interface ResultSetProcessor
Returns:
event type of the resulting events posted by the processor.

processJoinResult

public Pair<EventBean[],EventBean[]> processJoinResult(Set<MultiKey<EventBean>> newEvents,
                                                       Set<MultiKey<EventBean>> oldEvents)
Description copied from interface: ResultSetProcessor
For use by joins posting their result, process the event rows that are entered and removed (new and old events). Processes according to select-clauses, group-by clauses and having-clauses and returns new events and old events as specified.

Specified by:
processJoinResult in interface ResultSetProcessor
Parameters:
newEvents - - new events posted by join
oldEvents - - old events posted by join
Returns:
pair of new events and old events

processViewResult

public Pair<EventBean[],EventBean[]> processViewResult(EventBean[] newData,
                                                       EventBean[] oldData)
Description copied from interface: ResultSetProcessor
For use by views posting their result, process the event rows that are entered and removed (new and old events). Processes according to select-clauses, group-by clauses and having-clauses and returns new events and old events as specified.

Specified by:
processViewResult in interface ResultSetProcessor
Parameters:
newData - - new events posted by view
oldData - - old events posted by view
Returns:
pair of new events and old events