private void visitClauseCollection()

in asterix-graphix/src/main/java/org/apache/asterix/graphix/lang/rewrite/visitor/SchemaEnrichmentVisitor.java [93:131]


    private void visitClauseCollection(ClauseCollection clauseCollection) throws CompilationException {
        for (FunctionIdentifier functionIdentifier : functionIdentifiers) {
            IFunctionPrepare functionPrepare = getFunctionPrepare(functionIdentifier);
            for (LetClause representativeEdgeBinding : clauseCollection.getRepresentativeEdgeBindings()) {
                VariableExpr rightVar = representativeEdgeBinding.getVarExpr();
                Expression graphExpr = expressionMap.get(rightVar);
                if (isEdgeFunction(functionIdentifier)) {
                    Expression outputExpr = functionPrepare.prepare(representativeEdgeBinding.getBindingExpr(),
                            graphExpr, graphIdentifier, elementLookupTable);
                    representativeEdgeBinding.setBindingExpr(outputExpr);
                }
            }
            for (LetClause representativeVertexBinding : clauseCollection.getRepresentativeVertexBindings()) {
                VariableExpr rightVar = representativeVertexBinding.getVarExpr();
                Expression graphExpr = expressionMap.get(rightVar);
                if (isVertexFunction(functionIdentifier)) {
                    Expression outputExpr = functionPrepare.prepare(representativeVertexBinding.getBindingExpr(),
                            graphExpr, graphIdentifier, elementLookupTable);
                    representativeVertexBinding.setBindingExpr(outputExpr);
                }
            }
            for (Pair<VariableExpr, LetClause> eagerVertexBinding : clauseCollection.getEagerVertexBindings()) {
                Expression graphExpr = expressionMap.get(eagerVertexBinding.first);
                if (isVertexFunction(functionIdentifier)) {
                    Expression outputExpr = functionPrepare.prepare(eagerVertexBinding.second.getBindingExpr(),
                            graphExpr, graphIdentifier, elementLookupTable);
                    eagerVertexBinding.second.setBindingExpr(outputExpr);
                }
            }
            for (AbstractClause nonRepresentativeClause : clauseCollection.getNonRepresentativeClauses()) {
                if (nonRepresentativeClause.getClauseType() == Clause.ClauseType.EXTENSION) {
                    LowerSwitchClause lowerSwitchClause = (LowerSwitchClause) nonRepresentativeClause;
                    for (ClauseCollection innerClauseCollection : lowerSwitchClause.getCollectionLookupTable()) {
                        visitClauseCollection(innerClauseCollection);
                    }
                }
            }
        }
    }