public class ExprAggregateNodeUtil extends Object
Constructor and Description |
---|
ExprAggregateNodeUtil() |
Modifier and Type | Method and Description |
---|---|
static int |
countPositionalArgs(List<ExprNode> args) |
static void |
getAggregatesBottomUp(ExprNode[][] nodes,
List<ExprAggregateNode> aggregateNodes) |
static void |
getAggregatesBottomUp(ExprNode[] nodes,
List<ExprAggregateNode> aggregateNodes) |
static void |
getAggregatesBottomUp(ExprNode topNode,
List<ExprAggregateNode> aggregateNodes)
Populates into the supplied list all aggregation functions within this expression, if any.
|
static ExprAggregateNodeParamDesc |
getValidatePositionalParams(ExprNode[] childNodes,
boolean builtinAggregationFunc) |
static boolean |
isNonPositionalParameter(ExprNode node) |
public static ExprAggregateNodeParamDesc getValidatePositionalParams(ExprNode[] childNodes, boolean builtinAggregationFunc) throws ExprValidationException
ExprValidationException
public static boolean isNonPositionalParameter(ExprNode node)
public static void getAggregatesBottomUp(ExprNode[][] nodes, List<ExprAggregateNode> aggregateNodes)
public static void getAggregatesBottomUp(ExprNode[] nodes, List<ExprAggregateNode> aggregateNodes)
public static void getAggregatesBottomUp(ExprNode topNode, List<ExprAggregateNode> aggregateNodes)
Populates by going bottom-up such that nested aggregates appear first.
I.e. sum(volume * sum(price)) would put first A then B into the list with A=sum(price) and B=sum(volume * A)
topNode
- is the expression node to deep inspectaggregateNodes
- is a list of node to populate into