net.esper.eql.expression
Class ResultSetProcessorFactory

java.lang.Object
  extended by net.esper.eql.expression.ResultSetProcessorFactory

public class ResultSetProcessorFactory
extends java.lang.Object

Factory for output processors. Output processors process the result set of a join or of a view and apply aggregation/grouping, having and some output limiting logic.

The instance produced by the factory depends on the presence of aggregation functions in the select list, the presence and nature of the group-by clause.

In case (1) and (2) there are no aggregation functions in the select clause.

Case (3) is without group-by and with aggregation functions and without non-aggregated properties in the select list:

select sum(volume) 
. Always produces one row for new and old data, aggregates without grouping.

Case (4) is without group-by and with aggregation functions but with non-aggregated properties in the select list:

select price, sum(volume) 
. Produces a row for each event, aggregates without grouping.

Case (5) is with group-by and with aggregation functions and all selected properties are grouped-by. in the select list:

select customerId, sum(volume) group by customerId
. Produces a old and new data row for each group changed, aggregates with grouping, see ResultSetProcessorRowPerGroup

Case (6) is with group-by and with aggregation functions and only some selected properties are grouped-by. in the select list:

select customerId, supplierId, sum(volume) group by customerId
. Produces row for each event, aggregates with grouping.


Constructor Summary
ResultSetProcessorFactory()
           
 
Method Summary
static ResultSetProcessor getProcessor(java.util.List<SelectExprElement> selectionList, java.util.List<ExprNode> groupByNodes, ExprNode optionalHavingNode, StreamTypeService typeService, OutputLimitSpec outputLimitSpec)
          Returns the result set process for the given select expression, group-by clause and having clause given a set of types describing each stream in the from-clause.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResultSetProcessorFactory

public ResultSetProcessorFactory()
Method Detail

getProcessor

public static ResultSetProcessor getProcessor(java.util.List<SelectExprElement> selectionList,
                                              java.util.List<ExprNode> groupByNodes,
                                              ExprNode optionalHavingNode,
                                              StreamTypeService typeService,
                                              OutputLimitSpec outputLimitSpec)
                                       throws ExprValidationException
Returns the result set process for the given select expression, group-by clause and having clause given a set of types describing each stream in the from-clause.

Parameters:
selectionList - - represents select clause and thus the expression nodes listed in the select, or empty if wildcard
groupByNodes - - represents the expressions to group-by events based on event properties, or empty if no group-by was specified
optionalHavingNode - - represents the having-clause boolean filter criteria
typeService - - for information about the streams in the from clause
outputLimitSpec - - indicates whether to output all or only the last event.
Returns:
result set processor instance
Throws:
ExprValidationException