in asterix-bad/src/main/java/org/apache/asterix/bad/rules/RewriteChannelTimeFunctionToLocalVarRule.java [92:104]
private void updateActiveFuncExprsWithVars(Map<LogicalVariable, LogicalVariable> prevMap,
Map<LogicalVariable, LogicalVariable> currMap, Set<Mutable<ILogicalExpression>> activeFuncExprs) {
for (Mutable<ILogicalExpression> expr : activeFuncExprs) {
AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr.getValue();
LogicalVariable dsVar = ((VariableReferenceExpression) ((AbstractFunctionCallExpression) expr.getValue())
.getArguments().get(0).getValue()).getVariableReference();
if (funcExpr.getFunctionIdentifier() == BADFunctions.CURRENT_CHANNEL_TIME) {
expr.setValue(new VariableReferenceExpression(currMap.get(dsVar)));
} else if (funcExpr.getFunctionIdentifier() == BADFunctions.PREVIOUS_CHANNEL_TIME) {
expr.setValue(new VariableReferenceExpression(prevMap.get(dsVar)));
}
}
}