Yingyi Bu has submitted this change and it was merged.

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


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 <[email protected]>
Reviewed-by: Wenhai Li <[email protected]>
Reviewed-by: Taewoo Kim <[email protected]>
---
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
1 file changed, 11 insertions(+), 4 deletions(-)

Approvals:
  Taewoo Kim: Looks good to me, approved
  Wenhai Li: Looks good to me, but someone else must approve
  Jenkins: Verified



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 @@
         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 @@
         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 @@
     @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 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;
     }
 

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/622
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie3efa74e38bbfa9eee4a20e4a9cf6fc2a5840973
Gerrit-PatchSet: 2
Gerrit-Project: hyracks
Gerrit-Branch: master
Gerrit-Owner: Yingyi Bu <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Taewoo Kim <[email protected]>
Gerrit-Reviewer: Till Westmann <[email protected]>
Gerrit-Reviewer: Wenhai Li <[email protected]>
Gerrit-Reviewer: Yingyi Bu <[email protected]>

Reply via email to