Xikui Wang has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2722

Change subject: [NO-ISSUE][COMP] Copy hint when replicate OperatorExpr
......................................................................

[NO-ISSUE][COMP] Copy hint when replicate OperatorExpr

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
The hints are not copied over when Copy or Clone OperatorExpr.

Change-Id: I5eef37e525b7d1bec842e3488d8b63f88ddc05ea
---
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/AbstractExpression.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/OperatorExpr.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
M 
asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
4 files changed, 29 insertions(+), 16 deletions(-)


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

diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/AbstractExpression.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/AbstractExpression.java
index 773268f..e6fb852 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/AbstractExpression.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/AbstractExpression.java
@@ -34,6 +34,13 @@
         hints.add(hint);
     }
 
+    public void addHints(List<IExpressionAnnotation> hint) {
+        if (hints == null) {
+            hints = new ArrayList<>();
+        }
+        hints.addAll(hint);
+    }
+
     public boolean hasHints() {
         return hints != null;
     }
diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/OperatorExpr.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/OperatorExpr.java
index 9521469..e4d15b4 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/OperatorExpr.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/expression/OperatorExpr.java
@@ -27,6 +27,7 @@
 import org.apache.asterix.lang.common.base.Expression;
 import org.apache.asterix.lang.common.struct.OperatorType;
 import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import 
org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
 
 public class OperatorExpr extends AbstractExpression {
     private List<Expression> exprList;
@@ -42,11 +43,14 @@
     }
 
     public OperatorExpr(List<Expression> exprList, List<Integer> 
exprBroadcastIdx, List<OperatorType> opList,
-            boolean currentop) {
+            boolean currentop, List<IExpressionAnnotation> hint) {
         this.exprList = exprList;
         this.exprBroadcastIdx = exprBroadcastIdx;
         this.opList = opList;
         this.currentop = currentop;
+        if (hint != null) {
+            this.addHints(hint);
+        }
     }
 
     public boolean isCurrentop() {
diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
index 64023a8..1d34412 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/visitor/CloneAndSubstituteVariablesVisitor.java
@@ -82,8 +82,8 @@
     public Pair<ILangExpression, VariableSubstitutionEnvironment> 
visit(GroupbyClause gc,
             VariableSubstitutionEnvironment env) throws CompilationException {
         VariableSubstitutionEnvironment newSubs = env;
-        List<GbyVariableExpressionPair> newGbyList =
-                VariableCloneAndSubstitutionUtil.substInVarExprPair(context, 
gc.getGbyPairList(), newSubs, this);
+        List<GbyVariableExpressionPair> newGbyList = 
VariableCloneAndSubstitutionUtil.substInVarExprPair(context,
+                gc.getGbyPairList(), newSubs, this);
         List<GbyVariableExpressionPair> newDecorList = gc.hasDecorList()
                 ? VariableCloneAndSubstitutionUtil.substInVarExprPair(context, 
gc.getDecorPairList(), newSubs, this)
                 : new ArrayList<>();
@@ -122,8 +122,8 @@
         for (QuantifiedPair t : oldPairs) {
             VariableExpr newVar = generateNewVariable(context, t.getVarExpr());
             newSubs = 
VariableCloneAndSubstitutionUtil.eliminateSubstFromList(newVar, newSubs);
-            Pair<ILangExpression, VariableSubstitutionEnvironment> p1 =
-                    visitUnnesBindingExpression(t.getExpr(), newSubs);
+            Pair<ILangExpression, VariableSubstitutionEnvironment> p1 = 
visitUnnesBindingExpression(t.getExpr(),
+                    newSubs);
             QuantifiedPair t2 = new QuantifiedPair(newVar, (Expression) 
p1.first);
             newPairs.add(t2);
         }
@@ -227,7 +227,8 @@
             Pair<ILangExpression, VariableSubstitutionEnvironment> p1 = 
e.accept(this, env);
             exprs.add((Expression) p1.first);
         }
-        OperatorExpr oe = new OperatorExpr(exprs, op.getExprBroadcastIdx(), 
op.getOpList(), op.isCurrentop());
+        OperatorExpr oe = new OperatorExpr(exprs, op.getExprBroadcastIdx(), 
op.getOpList(), op.isCurrentop(),
+                op.getHints());
         oe.setSourceLocation(op.getSourceLocation());
         return new Pair<>(oe, env);
     }
@@ -235,8 +236,8 @@
     @Override
     public Pair<ILangExpression, VariableSubstitutionEnvironment> 
visit(OrderbyClause oc,
             VariableSubstitutionEnvironment env) throws CompilationException {
-        List<Expression> exprList =
-                
VariableCloneAndSubstitutionUtil.visitAndCloneExprList(oc.getOrderbyList(), 
env, this);
+        List<Expression> exprList = 
VariableCloneAndSubstitutionUtil.visitAndCloneExprList(oc.getOrderbyList(), env,
+                this);
         OrderbyClause oc2 = new OrderbyClause(exprList, oc.getModifierList());
         oc2.setNumFrames(oc.getNumFrames());
         oc2.setNumTuples(oc.getNumTuples());
diff --git 
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
 
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
index fbe9eb5..f251687 100644
--- 
a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
+++ 
b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/DeepCopyVisitor.java
@@ -140,9 +140,9 @@
 
     @Override
     public Projection visit(Projection projection, Void arg) throws 
CompilationException {
-        Projection copy =
-                new Projection(projection.star() ? null : (Expression) 
projection.getExpression().accept(this, arg),
-                        projection.getName(), projection.star(), 
projection.varStar());
+        Projection copy = new Projection(
+                projection.star() ? null : (Expression) 
projection.getExpression().accept(this, arg),
+                projection.getName(), projection.star(), projection.varStar());
         copy.setSourceLocation(projection.getSourceLocation());
         return copy;
     }
@@ -256,16 +256,16 @@
 
     @Override
     public Query visit(Query q, Void arg) throws CompilationException {
-        Query copy =
-                new Query(q.isExplain(), q.isTopLevel(), (Expression) 
q.getBody().accept(this, arg), q.getVarCounter());
+        Query copy = new Query(q.isExplain(), q.isTopLevel(), (Expression) 
q.getBody().accept(this, arg),
+                q.getVarCounter());
         copy.setSourceLocation(q.getSourceLocation());
         return copy;
     }
 
     @Override
     public FunctionDecl visit(FunctionDecl fd, Void arg) throws 
CompilationException {
-        FunctionDecl copy =
-                new FunctionDecl(fd.getSignature(), fd.getParamList(), 
(Expression) fd.getFuncBody().accept(this, arg));
+        FunctionDecl copy = new FunctionDecl(fd.getSignature(), 
fd.getParamList(),
+                (Expression) fd.getFuncBody().accept(this, arg));
         copy.setSourceLocation(fd.getSourceLocation());
         return copy;
     }
@@ -395,7 +395,8 @@
     @Override
     public OperatorExpr visit(OperatorExpr operatorExpr, Void arg) throws 
CompilationException {
         OperatorExpr copy = new 
OperatorExpr(copyExprList(operatorExpr.getExprList(), arg),
-                operatorExpr.getExprBroadcastIdx(), operatorExpr.getOpList(), 
operatorExpr.isCurrentop());
+                operatorExpr.getExprBroadcastIdx(), operatorExpr.getOpList(), 
operatorExpr.isCurrentop(),
+                operatorExpr.getHints());
         copy.setSourceLocation(operatorExpr.getSourceLocation());
         return copy;
     }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5eef37e525b7d1bec842e3488d8b63f88ddc05ea
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Xikui Wang <[email protected]>

Reply via email to