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]>