use of org.apache.asterix.optimizer.rules.ListifyUnnestingFunctionRule in project asterixdb by apache.
the class RuleCollections method buildNormalizationRuleCollection.
public static final List<IAlgebraicRewriteRule> buildNormalizationRuleCollection(ICcApplicationContext appCtx) {
List<IAlgebraicRewriteRule> normalization = new LinkedList<>();
normalization.add(new ResolveVariableRule());
normalization.add(new CheckInsertUpsertReturningRule());
normalization.add(new IntroduceUnnestForCollectionToSequenceRule());
normalization.add(new EliminateSubplanRule());
normalization.add(new EnforceOrderByAfterSubplan());
normalization.add(new BreakSelectIntoConjunctsRule());
normalization.add(new ExtractGbyExpressionsRule());
normalization.add(new ExtractDistinctByExpressionsRule());
normalization.add(new ExtractOrderExpressionsRule());
// IntroduceStaticTypeCastRule should go before
// IntroduceDynamicTypeCastRule to
// avoid unnecessary dynamic casting
normalization.add(new IntroduceStaticTypeCastForInsertRule());
normalization.add(new IntroduceDynamicTypeCastRule());
normalization.add(new IntroduceDynamicTypeCastForExternalFunctionRule());
normalization.add(new IntroduceEnforcedListTypeRule());
normalization.add(new ExtractCommonExpressionsRule());
// Let PushAggFuncIntoStandaloneAggregateRule run after ExtractCommonExpressionsRule
// so that PushAggFunc can happen in fewer places.
normalization.add(new PushAggFuncIntoStandaloneAggregateRule());
normalization.add(new ListifyUnnestingFunctionRule());
normalization.add(new ConstantFoldingRule(appCtx));
normalization.add(new RemoveRedundantSelectRule());
normalization.add(new UnnestToDataScanRule());
normalization.add(new MetaFunctionToMetaVariableRule());
normalization.add(new FuzzyEqRule());
normalization.add(new SimilarityCheckRule());
return normalization;
}
Aggregations