>From <[email protected]>:

[email protected] has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19404 )


Change subject: actual subplan change
......................................................................

actual subplan change

Change-Id: I87d3f9313bff16f4402bee1e6104d41cde4b575f
---
M 
hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
1 file changed, 24 insertions(+), 1 deletion(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/04/19404/1

diff --git 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
index ca92331..86f3186 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
@@ -30,10 +30,12 @@
 import org.apache.commons.lang3.mutable.MutableObject;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+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.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
 import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
@@ -131,6 +133,18 @@
             }
         }

+        if(op.hasNestedPlans()){
+            AbstractOperatorWithNestedPlans nestedPlansOp = 
(AbstractOperatorWithNestedPlans) op;
+            for(ILogicalPlan nestedPlanOp : nestedPlansOp.getNestedPlans()){
+                for(Mutable<ILogicalOperator> rootOpRef : 
nestedPlanOp.getRoots()){
+                    
if(introduceProjects(null,-1,rootOpRef,Collections.<LogicalVariable> 
emptySet(),context)){
+                        modified = true;
+                    }
+                }
+            }
+        }
+
+
         if (modified) {
             context.computeAndSetTypeEnvironmentForOperator(op);
         }
@@ -175,7 +189,7 @@
             
VariableUtilities.getLiveVariables(op.getInputs().get(0).getValue(), liveVars);
             ProjectOperator projectOp = (ProjectOperator) op;
             List<LogicalVariable> projectVarsTemp = projectOp.getVariables();
-            if (liveVars.size() == projectVarsTemp.size() && 
liveVars.containsAll(projectVarsTemp)) {
+            if (liveVars.size() == projectVarsTemp.size() && 
liveVars.containsAll(projectVarsTemp) && parentOp!=null) {
                 // The existing project has become useless. Remove it.
                 
parentOp.getInputs().get(parentInputIndex).setValue(op.getInputs().get(0).getValue());
                 modified = true;

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19404
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I87d3f9313bff16f4402bee1e6104d41cde4b575f
Gerrit-Change-Number: 19404
Gerrit-PatchSet: 1
Gerrit-Owner: [email protected]
Gerrit-MessageType: newchange

Reply via email to