private boolean visitGroupBy()

in asterix-bad/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java [188:205]


    private boolean visitGroupBy(ILogicalOperator currOp, ILogicalOperator brokerAssignOp, LogicalVariable endpointVar,
            LogicalVariable typeVar) {
        // this method makes sure even the broker information is not projected out
        boolean containsBroker = false;
        if (currOp == brokerAssignOp) {
            return true;
        } else {
            for (Mutable<ILogicalOperator> input : currOp.getInputs()) {
                containsBroker = containsBroker || visitGroupBy(input.getValue(), brokerAssignOp, endpointVar, typeVar);
            }
        }
        if (currOp.getOperatorTag() == LogicalOperatorTag.GROUP && containsBroker) {
            GroupByOperator groupByOperator = (GroupByOperator) currOp;
            groupByOperator.addDecorExpression(null, new VariableReferenceExpression(endpointVar));
            groupByOperator.addDecorExpression(null, new VariableReferenceExpression(typeVar));
        }
        return containsBroker;
    }