You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2016/02/10 01:01:22 UTC

incubator-asterixdb-hyracks git commit: Fix for ASTERIXDB-1291: deals with the case that a NTS' data source operator has been deep copied.

Repository: incubator-asterixdb-hyracks
Updated Branches:
  refs/heads/master f1fdb156a -> d960fd355


Fix for ASTERIXDB-1291: deals with the case that a NTS' data source operator has been deep copied.

Change-Id: Ie3efa74e38bbfa9eee4a20e4a9cf6fc2a5840973
Reviewed-on: https://asterix-gerrit.ics.uci.edu/622
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Wenhai Li <lw...@yahoo.com>
Reviewed-by: Taewoo Kim <wa...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb-hyracks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb-hyracks/commit/d960fd35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb-hyracks/tree/d960fd35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb-hyracks/diff/d960fd35

Branch: refs/heads/master
Commit: d960fd355813c6496b5fed2081e018e59bd216d9
Parents: f1fdb15
Author: Yingyi Bu <yi...@couchbase.com>
Authored: Tue Feb 9 11:42:23 2016 -0800
Committer: Yingyi Bu <bu...@gmail.com>
Committed: Tue Feb 9 15:56:45 2016 -0800

----------------------------------------------------------------------
 ...gicalOperatorDeepCopyWithNewVariablesVisitor.java | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb-hyracks/blob/d960fd35/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
----------------------------------------------------------------------
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
index 2a92ead..b3f6639 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
@@ -117,7 +117,12 @@ public class LogicalOperatorDeepCopyWithNewVariablesVisitor
         dest.getAnnotations().putAll(src.getAnnotations());
     }
 
-    public ILogicalOperator deepCopy(ILogicalOperator op, ILogicalOperator arg) throws AlgebricksException {
+    public ILogicalOperator deepCopy(ILogicalOperator op) throws AlgebricksException {
+        // The deep copy call outside this visitor always has a null argument.
+        return deepCopy(op, null);
+    }
+
+    private ILogicalOperator deepCopy(ILogicalOperator op, ILogicalOperator arg) throws AlgebricksException {
         ILogicalOperator opCopy = op.accept(this, arg);
         OperatorManipulationUtil.computeTypeEnvironmentBottomUp(opCopy, context);
         return opCopy;
@@ -308,8 +313,8 @@ public class LogicalOperatorDeepCopyWithNewVariablesVisitor
         List<ILogicalPlan> nestedPlansCopy = new ArrayList<ILogicalPlan>();
 
         GroupByOperator opCopy = new GroupByOperator(groupByListCopy, decorListCopy, nestedPlansCopy);
-        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
         deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
         return opCopy;
     }
 
@@ -348,7 +353,9 @@ public class LogicalOperatorDeepCopyWithNewVariablesVisitor
     @Override
     public ILogicalOperator visitNestedTupleSourceOperator(NestedTupleSourceOperator op, ILogicalOperator arg)
             throws AlgebricksException {
-        NestedTupleSourceOperator opCopy = new NestedTupleSourceOperator(op.getDataSourceReference());
+        Mutable<ILogicalOperator> dataSourceReference = arg == null ? op.getDataSourceReference()
+                : new MutableObject<ILogicalOperator>(arg);
+        NestedTupleSourceOperator opCopy = new NestedTupleSourceOperator(dataSourceReference);
         deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
         return opCopy;
     }
@@ -423,8 +430,8 @@ public class LogicalOperatorDeepCopyWithNewVariablesVisitor
     public ILogicalOperator visitSubplanOperator(SubplanOperator op, ILogicalOperator arg) throws AlgebricksException {
         List<ILogicalPlan> nestedPlansCopy = new ArrayList<ILogicalPlan>();
         SubplanOperator opCopy = new SubplanOperator(nestedPlansCopy);
-        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
         deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
         return opCopy;
     }