in asterix-bad/src/main/java/org/apache/asterix/bad/lang/BADRuleSetFactory.java [82:108]
private void addRewriteChannelTimeFunctionRule(
List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> logicalRuleSet,
ICcApplicationContext appCtx) {
// gen original normalization rules
List<IAlgebraicRewriteRule> originalRuleCollection = RuleCollections.buildLoadFieldsRuleCollection(appCtx);
// make a copy
List<IAlgebraicRewriteRule> alteredRuleCollection = new ArrayList<>();
alteredRuleCollection.addAll(originalRuleCollection);
// insert the broker rule
for (int i = 0; i < alteredRuleCollection.size(); i++) {
IAlgebraicRewriteRule rule = alteredRuleCollection.get(i);
if (rule instanceof FeedScanCollectionToUnnest) {
alteredRuleCollection.add(i + 1, new MetaFunctionToMetaVariableRule());
alteredRuleCollection.add(i + 1, new RewriteChannelTimeFunctionToLocalVarRule());
alteredRuleCollection.add(i + 1, new RewriteActiveFunctionsRule());
}
}
// replace all normalization rule collections with the new one
SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(true);
for (int i = 0; i < logicalRuleSet.size(); i++) {
List<IAlgebraicRewriteRule> existingRuleCollection = logicalRuleSet.get(i).second;
if (isSameRuleCollection(existingRuleCollection, originalRuleCollection)) {
logicalRuleSet.set(i, new Pair<>(seqCtrlNoDfs, alteredRuleCollection));
}
}
}