private void updateNormalizationRules()

in asterix-bad/src/main/java/org/apache/asterix/bad/lang/BADRuleSetFactory.java [54:80]


    private void updateNormalizationRules(
            List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> logicalRuleSet,
            ICcApplicationContext appCtx) {
        // gen original normalization rules
        List<IAlgebraicRewriteRule> originalNormalizationRules =
                RuleCollections.buildNormalizationRuleCollection(appCtx);
        // make a copy
        List<IAlgebraicRewriteRule> alteredNormalizationRules = new ArrayList<>();
        alteredNormalizationRules.addAll(originalNormalizationRules);

        // insert the broker rule
        for (int i = 0; i < alteredNormalizationRules.size(); i++) {
            IAlgebraicRewriteRule rule = alteredNormalizationRules.get(i);
            if (rule instanceof UnnestToDataScanRule) {
                alteredNormalizationRules.add(i + 1, new InsertBrokerNotifierForChannelRule());
            }
        }

        // replace all normalization rule collections with the new one
        SequentialFixpointRuleController seqOnceCtrl = new SequentialFixpointRuleController(true);
        for (int i = 0; i < logicalRuleSet.size(); i++) {
            List<IAlgebraicRewriteRule> existingRuleCollection = logicalRuleSet.get(i).second;
            if (isSameRuleCollection(existingRuleCollection, originalNormalizationRules)) {
                logicalRuleSet.set(i, new Pair<>(seqOnceCtrl, alteredNormalizationRules));
            }
        }
    }