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);
}
}
}
}
}