Steven Jacobs has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1304
Change subject: ASTERIXDB-1573 Allow Extension of Rewrite Rules
......................................................................
ASTERIXDB-1573 Allow Extension of Rewrite Rules
Add IRuleSetFactory which builds rewrite Rule Set
Can be extended by Asterix Extensions
Change-Id: I7f59dea86b0ef4ee9d31b56766a97bd2b34ec02c
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
A
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
A
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/IRuleSetFactory.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/java/AsterixJavaClient.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
10 files changed, 153 insertions(+), 72 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/04/1304/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
index 00affa8..af0ba73 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
@@ -49,4 +49,9 @@
return new AqlExpressionToPlanTranslatorFactory();
}
+ @Override
+ public IRuleSetFactory getRuleSetFactory() {
+ return new DefaultRuleSetFactory();
+ }
+
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
new file mode 100644
index 0000000..ccae63c
--- /dev/null
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.compiler.provider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.optimizer.base.RuleCollections;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import
org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController;
+import
org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController;
+import org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+public class DefaultRuleSetFactory implements IRuleSetFactory {
+
+ @Override
+ public List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
buildLogicalRewrites() {
+ return buildLogical();
+ }
+
+ @Override
+ public List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
buildPhysicalRewrites() {
+ return buildPhysical();
+ }
+
+ public static List<Pair<AbstractRuleController,
List<IAlgebraicRewriteRule>>> buildLogical() {
+ List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
defaultLogicalRewrites = new ArrayList<>();
+ SequentialFixpointRuleController seqCtrlNoDfs = new
SequentialFixpointRuleController(false);
+ SequentialFixpointRuleController seqCtrlFullDfs = new
SequentialFixpointRuleController(true);
+ SequentialOnceRuleController seqOnceCtrl = new
SequentialOnceRuleController(true);
+ defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildInitialTranslationRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildTypeInferenceRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildAutogenerateIDRuleCollection()));
+ defaultLogicalRewrites
+ .add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildNormalizationRuleCollection()));
+ defaultLogicalRewrites
+ .add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildLoadFieldsRuleCollection()));
+ // fj
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildFuzzyJoinRuleCollection()));
+ //
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildNormalizationRuleCollection()));
+ defaultLogicalRewrites
+ .add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildLoadFieldsRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildDataExchangeRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildConsolidationRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildAccessMethodRuleCollection()));
+ defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildPlanCleanupRuleCollection()));
+
+ //put TXnRuleCollection!
+ return defaultLogicalRewrites;
+ }
+
+ public static List<Pair<AbstractRuleController,
List<IAlgebraicRewriteRule>>> buildPhysical() {
+ List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
defaultPhysicalRewrites = new ArrayList<>();
+ SequentialOnceRuleController seqOnceCtrl = new
SequentialOnceRuleController(true);
+ SequentialOnceRuleController seqOnceTopLevel = new
SequentialOnceRuleController(false);
+ defaultPhysicalRewrites
+ .add(new Pair<>(seqOnceCtrl,
RuleCollections.buildPhysicalRewritesAllLevelsRuleCollection()));
+ defaultPhysicalRewrites
+ .add(new Pair<>(seqOnceTopLevel,
RuleCollections.buildPhysicalRewritesTopLevelRuleCollection()));
+ defaultPhysicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.prepareForJobGenRuleCollection()));
+ return defaultPhysicalRewrites;
+ }
+
+}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
index fbb55e9..f658be9 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
@@ -45,4 +45,9 @@
*/
public ILangExpressionToPlanTranslatorFactory
getExpressionToPlanTranslatorFactory();
+ /**
+ * @return the rule set factory of a language implementation
+ */
+ public IRuleSetFactory getRuleSetFactory();
+
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/IRuleSetFactory.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/IRuleSetFactory.java
new file mode 100644
index 0000000..660ba43
--- /dev/null
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/IRuleSetFactory.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.compiler.provider;
+
+import java.util.List;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+public interface IRuleSetFactory {
+
+ /**
+ * @return the logical rewrites
+ * @throws AlgebricksException
+ */
+ public List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
buildLogicalRewrites()
+ throws AlgebricksException;
+
+ /**
+ * @return the physical rewrites
+ */
+ public List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
buildPhysicalRewrites();
+
+}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
index 2b270df..70f8f92 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
@@ -49,4 +49,9 @@
return new SqlppExpressionToPlanTranslatorFactory();
}
+ @Override
+ public IRuleSetFactory getRuleSetFactory() {
+ return new DefaultRuleSetFactory();
+ }
+
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
index 56a3bd0..3efc4dc 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
@@ -22,7 +22,6 @@
import java.util.LinkedList;
import java.util.List;
-import org.apache.asterix.algebra.extension.IAlgebraExtensionManager;
import
org.apache.asterix.optimizer.rules.AddEquivalenceClassForRecordConstructorRule;
import
org.apache.asterix.optimizer.rules.AsterixExtractFunctionsFromJoinConditionRule;
import org.apache.asterix.optimizer.rules.AsterixInlineVariablesRule;
@@ -66,10 +65,10 @@
import org.apache.asterix.optimizer.rules.RemoveRedundantSelectRule;
import org.apache.asterix.optimizer.rules.RemoveSortInFeedIngestionRule;
import org.apache.asterix.optimizer.rules.RemoveUnusedOneToOneEquiJoinRule;
-import org.apache.asterix.optimizer.rules.SetupCommitExtensionOpRule;
import org.apache.asterix.optimizer.rules.ResolveVariableRule;
import org.apache.asterix.optimizer.rules.SetAsterixPhysicalOperatorsRule;
import org.apache.asterix.optimizer.rules.SetClosedRecordConstructorsRule;
+import org.apache.asterix.optimizer.rules.SetupCommitExtensionOpRule;
import org.apache.asterix.optimizer.rules.SimilarityCheckRule;
import org.apache.asterix.optimizer.rules.SweepIllegalNonfunctionalFunctions;
import org.apache.asterix.optimizer.rules.UnnestToDataScanRule;
@@ -155,9 +154,7 @@
return autogen;
}
- //TODO(amoudi/yingyi): refactor this to use a provider instead of passing
the extensionManager
- public static final List<IAlgebraicRewriteRule>
buildNormalizationRuleCollection(
- IAlgebraExtensionManager algebraExtensionManager) {
+ public static final List<IAlgebraicRewriteRule>
buildNormalizationRuleCollection() {
List<IAlgebraicRewriteRule> normalization = new LinkedList<>();
normalization.add(new ResolveVariableRule());
normalization.add(new IntroduceUnnestForCollectionToSequenceRule());
@@ -183,7 +180,7 @@
normalization.add(new ListifyUnnestingFunctionRule());
normalization.add(new ConstantFoldingRule());
normalization.add(new RemoveRedundantSelectRule());
- normalization.add(new UnnestToDataScanRule(algebraExtensionManager));
+ normalization.add(new UnnestToDataScanRule());
normalization.add(new MetaFunctionToMetaVariableRule());
normalization.add(new FuzzyEqRule());
normalization.add(new SimilarityCheckRule());
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
index c033214..dc49d6c 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/UnnestToDataScanRule.java
@@ -21,7 +21,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.asterix.algebra.extension.IAlgebraExtensionManager;
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
import org.apache.asterix.external.feed.watch.FeedActivityDetails;
import org.apache.asterix.external.util.ExternalDataUtils;
@@ -68,11 +67,6 @@
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
public class UnnestToDataScanRule implements IAlgebraicRewriteRule {
- private final IAlgebraExtensionManager algebraExtensionManager;
-
- public UnnestToDataScanRule(IAlgebraExtensionManager
algebraExtensionManager) {
- this.algebraExtensionManager = algebraExtensionManager;
- }
@Override
public boolean rewritePre(Mutable<ILogicalOperator> opRef,
IOptimizationContext context)
@@ -202,8 +196,6 @@
opRef.setValue(scan);
context.computeAndSetTypeEnvironmentForOperator(scan);
return true;
- } else if (algebraExtensionManager != null) {
- return algebraExtensionManager.unnestToDataScan(opRef,
context, unnest, unnestExpr, f);
}
}
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index eb1764c..376d9b9 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -21,13 +21,11 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.rmi.RemoteException;
-import java.util.ArrayList;
import java.util.List;
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslator;
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
import org.apache.asterix.api.common.Job.SubmissionMode;
-import org.apache.asterix.app.cc.CompilerExtensionManager;
import org.apache.asterix.app.result.ResultUtil;
import org.apache.asterix.common.config.AsterixCompilerProperties;
import org.apache.asterix.common.config.AsterixExternalProperties;
@@ -35,6 +33,7 @@
import org.apache.asterix.common.exceptions.ACIDException;
import org.apache.asterix.common.exceptions.AsterixException;
import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.compiler.provider.IRuleSetFactory;
import org.apache.asterix.dataflow.data.common.AqlExpressionTypeComputer;
import
org.apache.asterix.dataflow.data.common.AqlMergeAggregationExpressionFactory;
import org.apache.asterix.dataflow.data.common.AqlMissableTypeComputer;
@@ -50,7 +49,6 @@
import org.apache.asterix.lang.common.statement.FunctionDecl;
import org.apache.asterix.lang.common.statement.Query;
import org.apache.asterix.metadata.declared.AqlMetadataProvider;
-import org.apache.asterix.optimizer.base.RuleCollections;
import org.apache.asterix.runtime.job.listener.JobEventListenerFactory;
import org.apache.asterix.runtime.util.AsterixAppContextInfo;
import
org.apache.asterix.transaction.management.service.transaction.JobIdFactory;
@@ -63,8 +61,6 @@
import
org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder;
import org.apache.hyracks.algebricks.compiler.api.ICompiler;
import org.apache.hyracks.algebricks.compiler.api.ICompilerFactory;
-import
org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController;
-import
org.apache.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import
org.apache.hyracks.algebricks.core.algebra.expressions.IConflictingTypeResolver;
@@ -77,9 +73,7 @@
import
org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
import org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPlotter;
import
org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-import org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
import
org.apache.hyracks.algebricks.core.rewriter.base.AlgebricksOptimizationContext;
-import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
import
org.apache.hyracks.algebricks.core.rewriter.base.IOptimizationContextFactory;
import
org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
import org.apache.hyracks.api.client.IHyracksClientConnection;
@@ -96,56 +90,13 @@
private final IRewriterFactory rewriterFactory;
private final IAstPrintVisitorFactory astPrintVisitorFactory;
private final ILangExpressionToPlanTranslatorFactory translatorFactory;
- private final CompilerExtensionManager cExtensionManager;
+ private final IRuleSetFactory ruleSetFactory;
- public APIFramework(ILangCompilationProvider compilationProvider,
CompilerExtensionManager cExtensionManager) {
+ public APIFramework(ILangCompilationProvider compilationProvider) {
this.rewriterFactory = compilationProvider.getRewriterFactory();
this.astPrintVisitorFactory =
compilationProvider.getAstPrintVisitorFactory();
this.translatorFactory =
compilationProvider.getExpressionToPlanTranslatorFactory();
- this.cExtensionManager = cExtensionManager;
- }
-
- private static List<Pair<AbstractRuleController,
List<IAlgebraicRewriteRule>>>
- buildDefaultLogicalRewrites(CompilerExtensionManager
ccExtensionManager) {
- List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
defaultLogicalRewrites = new ArrayList<>();
- SequentialFixpointRuleController seqCtrlNoDfs = new
SequentialFixpointRuleController(false);
- SequentialFixpointRuleController seqCtrlFullDfs = new
SequentialFixpointRuleController(true);
- SequentialOnceRuleController seqOnceCtrl = new
SequentialOnceRuleController(true);
- defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildInitialTranslationRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildTypeInferenceRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildAutogenerateIDRuleCollection()));
- defaultLogicalRewrites
- .add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildNormalizationRuleCollection(ccExtensionManager)));
- defaultLogicalRewrites
- .add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildLoadFieldsRuleCollection()));
- // fj
- defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildFuzzyJoinRuleCollection()));
- //
- defaultLogicalRewrites
- .add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildNormalizationRuleCollection(ccExtensionManager)));
- defaultLogicalRewrites
- .add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs,
RuleCollections.buildLoadFieldsRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.buildDataExchangeRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildConsolidationRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildAccessMethodRuleCollection()));
- defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs,
RuleCollections.buildPlanCleanupRuleCollection()));
-
- //put TXnRuleCollection!
- return defaultLogicalRewrites;
- }
-
- private static List<Pair<AbstractRuleController,
List<IAlgebraicRewriteRule>>> buildDefaultPhysicalRewrites() {
- List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>
defaultPhysicalRewrites = new ArrayList<>();
- SequentialOnceRuleController seqOnceCtrl = new
SequentialOnceRuleController(true);
- SequentialOnceRuleController seqOnceTopLevel = new
SequentialOnceRuleController(false);
- defaultPhysicalRewrites
- .add(new Pair<>(seqOnceCtrl,
RuleCollections.buildPhysicalRewritesAllLevelsRuleCollection()));
- defaultPhysicalRewrites
- .add(new Pair<>(seqOnceTopLevel,
RuleCollections.buildPhysicalRewritesTopLevelRuleCollection()));
- defaultPhysicalRewrites.add(new Pair<>(seqOnceCtrl,
RuleCollections.prepareForJobGenRuleCollection()));
- return defaultPhysicalRewrites;
+ this.ruleSetFactory = compilationProvider.getRuleSetFactory();
}
private static class AqlOptimizationContextFactory implements
IOptimizationContextFactory {
@@ -258,8 +209,8 @@
HeuristicCompilerFactoryBuilder builder =
new
HeuristicCompilerFactoryBuilder(AqlOptimizationContextFactory.INSTANCE);
builder.setPhysicalOptimizationConfig(OptimizationConfUtil.getPhysicalOptimizationConfig());
-
builder.setLogicalRewrites(buildDefaultLogicalRewrites(cExtensionManager));
- builder.setPhysicalRewrites(buildDefaultPhysicalRewrites());
+ builder.setLogicalRewrites(ruleSetFactory.buildLogicalRewrites());
+ builder.setPhysicalRewrites(ruleSetFactory.buildPhysicalRewrites());
IDataFormat format = queryMetadataProvider.getFormat();
ICompilerFactory compilerFactory = builder.create();
builder.setExpressionEvalSizeComputer(format.getExpressionEvalSizeComputer());
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/java/AsterixJavaClient.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/java/AsterixJavaClient.java
index b269ecf..fd9c6cd 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/java/AsterixJavaClient.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/java/AsterixJavaClient.java
@@ -56,7 +56,7 @@
this.queryText = queryText;
this.writer = writer;
this.compilationProvider = compilationProvider;
- this.apiFramework = new APIFramework(compilationProvider, null);
+ this.apiFramework = new APIFramework(compilationProvider);
this.statementExecutorFactory = statementExecutorFactory;
parserFactory = compilationProvider.getParserFactory();
}
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index d5b1415..df0461d 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -235,7 +235,7 @@
this.statements = aqlStatements;
this.sessionConfig = conf;
this.declaredFunctions = getDeclaredFunctions(aqlStatements);
- this.apiFramework = new APIFramework(compliationProvider,
ccExtensionManager);
+ this.apiFramework = new APIFramework(compliationProvider);
this.rewriterFactory = compliationProvider.getRewriterFactory();
activeDefaultDataverse = MetadataBuiltinEntities.DEFAULT_DATAVERSE;
}
@@ -3123,7 +3123,7 @@
return (dataverse != null) ? dataverse :
activeDefaultDataverse.getDataverseName();
}
- protected String getActiveDataverse(Identifier dataverse) {
+ public String getActiveDataverse(Identifier dataverse) {
return getActiveDataverseName(dataverse != null ? dataverse.getValue()
: null);
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/1304
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7f59dea86b0ef4ee9d31b56766a97bd2b34ec02c
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Steven Jacobs <[email protected]>