blob: 53c051b14b88f3064f8343329aae5a3827b0a9c7 [file] [log] [blame]
package edu.uci.ics.asterix.aql.rewrites;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import edu.uci.ics.asterix.aql.base.Clause;
import edu.uci.ics.asterix.aql.base.Expression;
import edu.uci.ics.asterix.aql.base.IAqlExpression;
import edu.uci.ics.asterix.aql.expression.BeginFeedStatement;
import edu.uci.ics.asterix.aql.expression.CallExpr;
import edu.uci.ics.asterix.aql.expression.ControlFeedStatement;
import edu.uci.ics.asterix.aql.expression.CreateDataverseStatement;
import edu.uci.ics.asterix.aql.expression.CreateFunctionStatement;
import edu.uci.ics.asterix.aql.expression.CreateIndexStatement;
import edu.uci.ics.asterix.aql.expression.DatasetDecl;
import edu.uci.ics.asterix.aql.expression.DataverseDecl;
import edu.uci.ics.asterix.aql.expression.DataverseDropStatement;
import edu.uci.ics.asterix.aql.expression.DeleteStatement;
import edu.uci.ics.asterix.aql.expression.DieClause;
import edu.uci.ics.asterix.aql.expression.DistinctClause;
import edu.uci.ics.asterix.aql.expression.DropStatement;
import edu.uci.ics.asterix.aql.expression.FLWOGRExpression;
import edu.uci.ics.asterix.aql.expression.FieldAccessor;
import edu.uci.ics.asterix.aql.expression.FieldBinding;
import edu.uci.ics.asterix.aql.expression.ForClause;
import edu.uci.ics.asterix.aql.expression.FunctionDecl;
import edu.uci.ics.asterix.aql.expression.FunctionDropStatement;
import edu.uci.ics.asterix.aql.expression.GbyVariableExpressionPair;
import edu.uci.ics.asterix.aql.expression.GroupbyClause;
import edu.uci.ics.asterix.aql.expression.IfExpr;
import edu.uci.ics.asterix.aql.expression.IndexAccessor;
import edu.uci.ics.asterix.aql.expression.IndexDropStatement;
import edu.uci.ics.asterix.aql.expression.InsertStatement;
import edu.uci.ics.asterix.aql.expression.LetClause;
import edu.uci.ics.asterix.aql.expression.LimitClause;
import edu.uci.ics.asterix.aql.expression.ListConstructor;
import edu.uci.ics.asterix.aql.expression.LiteralExpr;
import edu.uci.ics.asterix.aql.expression.LoadFromFileStatement;
import edu.uci.ics.asterix.aql.expression.NodeGroupDropStatement;
import edu.uci.ics.asterix.aql.expression.NodegroupDecl;
import edu.uci.ics.asterix.aql.expression.OperatorExpr;
import edu.uci.ics.asterix.aql.expression.OrderbyClause;
import edu.uci.ics.asterix.aql.expression.OrderedListTypeDefinition;
import edu.uci.ics.asterix.aql.expression.QuantifiedExpression;
import edu.uci.ics.asterix.aql.expression.QuantifiedPair;
import edu.uci.ics.asterix.aql.expression.Query;
import edu.uci.ics.asterix.aql.expression.RecordConstructor;
import edu.uci.ics.asterix.aql.expression.RecordTypeDefinition;
import edu.uci.ics.asterix.aql.expression.SetStatement;
import edu.uci.ics.asterix.aql.expression.TypeDecl;
import edu.uci.ics.asterix.aql.expression.TypeDropStatement;
import edu.uci.ics.asterix.aql.expression.TypeReferenceExpression;
import edu.uci.ics.asterix.aql.expression.UnaryExpr;
import edu.uci.ics.asterix.aql.expression.UnionExpr;
import edu.uci.ics.asterix.aql.expression.UnorderedListTypeDefinition;
import edu.uci.ics.asterix.aql.expression.UpdateClause;
import edu.uci.ics.asterix.aql.expression.UpdateStatement;
import edu.uci.ics.asterix.aql.expression.VarIdentifier;
import edu.uci.ics.asterix.aql.expression.VariableExpr;
import edu.uci.ics.asterix.aql.expression.WhereClause;
import edu.uci.ics.asterix.aql.expression.WriteFromQueryResultStatement;
import edu.uci.ics.asterix.aql.expression.WriteStatement;
import edu.uci.ics.asterix.aql.expression.visitor.IAqlExpressionVisitor;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
public class CloneAndSubstituteVariablesVisitor implements
IAqlExpressionVisitor<Pair<IAqlExpression, List<VariableSubstitution>>, List<VariableSubstitution>> {
private AqlRewritingContext context;
public CloneAndSubstituteVariablesVisitor(AqlRewritingContext context) {
this.context = context;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitFieldAccessor(FieldAccessor fa,
List<VariableSubstitution> arg) throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p = fa.getExpr().accept(this, arg);
FieldAccessor newF = new FieldAccessor((Expression) p.first, fa.getIdent());
return new Pair<IAqlExpression, List<VariableSubstitution>>(newF, p.second);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitFlworExpression(FLWOGRExpression flwor,
List<VariableSubstitution> arg) throws AsterixException {
List<Clause> newClauses = new ArrayList<Clause>(flwor.getClauseList().size());
List<VariableSubstitution> ongoing = arg;
for (Clause c : flwor.getClauseList()) {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = c.accept(this, ongoing);
ongoing = p1.second;
newClauses.add((Clause) p1.first);
}
Pair<IAqlExpression, List<VariableSubstitution>> p2 = flwor.getReturnExpr().accept(this, ongoing);
Expression newReturnExpr = (Expression) p2.first;
FLWOGRExpression newFlwor = new FLWOGRExpression(newClauses, newReturnExpr);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newFlwor, p2.second);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitForClause(ForClause fc, List<VariableSubstitution> arg)
throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = fc.getInExpr().accept(this, arg);
VarIdentifier vi = fc.getVarExpr().getVar();
// we need new variables
VarIdentifier newVar = context.mapOldId(vi.getId(), vi.getValue());
VariableSubstitution vs = findVarSubst(arg, vi);
List<VariableSubstitution> newSubs;
if (vs == null) {
newSubs = arg;
} else {
// This for clause is overriding a binding, so we don't subst. that
// one anymore.
newSubs = eliminateSubstFromList(vi, arg);
}
VariableExpr newVe = new VariableExpr(newVar);
ForClause newFor = new ForClause(newVe, (Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newFor, newSubs);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitLetClause(LetClause lc, List<VariableSubstitution> arg)
throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = lc.getBindingExpr().accept(this, arg);
VarIdentifier vi = lc.getVarExpr().getVar();
VarIdentifier newVar = context.mapOldId(vi.getId(), vi.getValue());
VariableSubstitution vs = findVarSubst(arg, vi);
List<VariableSubstitution> newSubs;
if (vs == null) {
newSubs = arg;
} else {
newSubs = eliminateSubstFromList(vi, arg);
}
VariableExpr newVe = new VariableExpr(newVar);
LetClause newLet = new LetClause(newVe, (Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newLet, newSubs);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitGroupbyClause(GroupbyClause gc,
List<VariableSubstitution> arg) throws AsterixException {
List<VariableSubstitution> newSubs = arg;
List<GbyVariableExpressionPair> newGbyList = substInVarExprPair(gc.getGbyPairList(), arg, newSubs);
List<GbyVariableExpressionPair> newDecorList = substInVarExprPair(gc.getDecorPairList(), arg, newSubs);
List<VariableExpr> wList = new LinkedList<VariableExpr>();
for (VariableExpr w : gc.getWithVarList()) {
VarIdentifier newVar = context.getRewrittenVar(w.getVar().getId());
wList.add(new VariableExpr(newVar));
}
GroupbyClause newGroup = new GroupbyClause(newGbyList, newDecorList, wList, gc.hasHashGroupByHint());
return new Pair<IAqlExpression, List<VariableSubstitution>>(newGroup, newSubs);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitQuantifiedExpression(QuantifiedExpression qe,
List<VariableSubstitution> arg) throws AsterixException {
List<QuantifiedPair> oldPairs = qe.getQuantifiedList();
List<QuantifiedPair> newPairs = new ArrayList<QuantifiedPair>(oldPairs.size());
List<VarIdentifier> newVis = new LinkedList<VarIdentifier>();
List<VariableSubstitution> newSubs = arg;
for (QuantifiedPair t : oldPairs) {
VarIdentifier newVar = context.mapOldVarIdentifier(t.getVarExpr().getVar());
newVis.add(newVar);
newSubs = eliminateSubstFromList(newVar, newSubs);
Pair<IAqlExpression, List<VariableSubstitution>> p1 = t.getExpr().accept(this, newSubs);
QuantifiedPair t2 = new QuantifiedPair(new VariableExpr(newVar), (Expression) p1.first);
newPairs.add(t2);
}
Pair<IAqlExpression, List<VariableSubstitution>> p2 = qe.getSatisfiesExpr().accept(this, newSubs);
QuantifiedExpression qe2 = new QuantifiedExpression(qe.getQuantifier(), newPairs, (Expression) p2.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(qe2, newSubs);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitVariableExpr(VariableExpr v,
List<VariableSubstitution> arg) throws AsterixException {
VariableSubstitution vs = findVarSubst(arg, v.getVar());
VarIdentifier var;
if (vs != null) {
// it is a variable subst from the list
var = vs.getNewVar();
} else {
// it is a var. from the context
var = context.getRewrittenVar(v.getVar().getId());
if(var == null){
var = v.getVar();
}
}
VariableExpr ve = new VariableExpr(var);
return new Pair<IAqlExpression, List<VariableSubstitution>>(ve, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitWhereClause(WhereClause wc,
List<VariableSubstitution> arg) throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = wc.getWhereExpr().accept(this, arg);
WhereClause newW = new WhereClause((Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newW, p1.second);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitCallExpr(CallExpr pf, List<VariableSubstitution> arg)
throws AsterixException {
List<Expression> exprList = visitAndCloneExprList(pf.getExprList(), arg);
CallExpr f = new CallExpr(pf.getIdent(), exprList);
return new Pair<IAqlExpression, List<VariableSubstitution>>(f, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitFunctionDecl(FunctionDecl fd,
List<VariableSubstitution> arg) throws AsterixException {
List<VarIdentifier> newList = new ArrayList<VarIdentifier>(fd.getParamList().size());
for (VarIdentifier vi : fd.getParamList()) {
VariableSubstitution vs = findVarSubst(arg, vi);
if (vs == null) {
throw new AsterixException("Parameter " + vi + " does not appear in the substitution list.");
}
newList.add(vs.getNewVar());
}
Pair<IAqlExpression, List<VariableSubstitution>> p1 = fd.getFuncBody().accept(this, arg);
FunctionDecl newF = new FunctionDecl(fd.getIdent(), newList, (Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newF, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitIfExpr(IfExpr ifexpr, List<VariableSubstitution> arg)
throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = ifexpr.getCondExpr().accept(this, arg);
Pair<IAqlExpression, List<VariableSubstitution>> p2 = ifexpr.getThenExpr().accept(this, arg);
Pair<IAqlExpression, List<VariableSubstitution>> p3 = ifexpr.getElseExpr().accept(this, arg);
IfExpr i = new IfExpr((Expression) p1.first, (Expression) p2.first, (Expression) p3.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(i, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitIndexAccessor(IndexAccessor ia,
List<VariableSubstitution> arg) throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = ia.getExpr().accept(this, arg);
IndexAccessor i = new IndexAccessor((Expression) p1.first, ia.getIndex());
i.setAny(ia.isAny());
return new Pair<IAqlExpression, List<VariableSubstitution>>(i, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitLimitClause(LimitClause lc,
List<VariableSubstitution> arg) throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = lc.getLimitExpr().accept(this, arg);
Pair<IAqlExpression, List<VariableSubstitution>> p2 = lc.getOffset().accept(this, arg);
LimitClause c = new LimitClause((Expression) p1.first, (Expression) p2.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(c, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDieClause(DieClause lc, List<VariableSubstitution> arg)
throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = lc.getDieExpr().accept(this, arg);
DieClause c = new DieClause((Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(c, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitListConstructor(ListConstructor lc,
List<VariableSubstitution> arg) throws AsterixException {
List<Expression> oldExprList = lc.getExprList();
List<Expression> exprs = visitAndCloneExprList(oldExprList, arg);
ListConstructor c = new ListConstructor(lc.getType(), exprs);
return new Pair<IAqlExpression, List<VariableSubstitution>>(c, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitLiteralExpr(LiteralExpr l,
List<VariableSubstitution> arg) throws AsterixException {
// LiteralExpr e = new LiteralExpr(l.getValue());
return new Pair<IAqlExpression, List<VariableSubstitution>>(l, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitOperatorExpr(OperatorExpr op,
List<VariableSubstitution> arg) throws AsterixException {
ArrayList<Expression> oldExprList = op.getExprList();
ArrayList<Expression> exprs = new ArrayList<Expression>(oldExprList.size());
for (Expression e : oldExprList) {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = e.accept(this, arg);
exprs.add((Expression) p1.first);
}
OperatorExpr oe = new OperatorExpr(exprs, op.getExprBroadcastIdx(), op.getOpList());
oe.setCurrentop(op.isCurrentop());
return new Pair<IAqlExpression, List<VariableSubstitution>>(oe, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitOrderbyClause(OrderbyClause oc,
List<VariableSubstitution> arg) throws AsterixException {
List<Expression> exprList = visitAndCloneExprList(oc.getOrderbyList(), arg);
OrderbyClause oc2 = new OrderbyClause(exprList, oc.getModifierList());
return new Pair<IAqlExpression, List<VariableSubstitution>>(oc2, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitQuery(Query q, List<VariableSubstitution> arg)
throws AsterixException {
Query newQ = new Query();
Pair<IAqlExpression, List<VariableSubstitution>> p1 = q.getBody().accept(this, arg);
newQ.setBody((Expression) p1.first);
newQ.setPrologDeclList(q.getPrologDeclList());
return new Pair<IAqlExpression, List<VariableSubstitution>>(newQ, p1.second);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitRecordConstructor(RecordConstructor rc,
List<VariableSubstitution> arg) throws AsterixException {
List<FieldBinding> oldFbs = rc.getFbList();
ArrayList<FieldBinding> newFbs = new ArrayList<FieldBinding>(oldFbs.size());
for (FieldBinding fb : oldFbs) {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = fb.getLeftExpr().accept(this, arg);
Pair<IAqlExpression, List<VariableSubstitution>> p2 = fb.getRightExpr().accept(this, arg);
FieldBinding fb2 = new FieldBinding((Expression) p1.first, (Expression) p2.first);
newFbs.add(fb2);
}
RecordConstructor newRc = new RecordConstructor(newFbs);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newRc, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitUnaryExpr(UnaryExpr u, List<VariableSubstitution> arg)
throws AsterixException {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = u.getExpr().accept(this, arg);
UnaryExpr newU = new UnaryExpr(u.getSign(), (Expression) p1.first);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newU, arg);
}
private List<Expression> visitAndCloneExprList(List<Expression> oldExprList, List<VariableSubstitution> arg)
throws AsterixException {
List<Expression> exprs = new ArrayList<Expression>(oldExprList.size());
for (Expression e : oldExprList) {
Pair<IAqlExpression, List<VariableSubstitution>> p1 = e.accept(this, arg);
exprs.add((Expression) p1.first);
}
return exprs;
}
private static VariableSubstitution findVarSubst(List<VariableSubstitution> varSubstList, VarIdentifier v) {
VariableSubstitution res = null;
for (VariableSubstitution s : varSubstList) {
if (s.getOldVar().getValue().equals(v.getValue())) {
res = s;
break;
}
}
return res;
}
private static List<VariableSubstitution> eliminateSubstFromList(VarIdentifier vi, List<VariableSubstitution> arg) {
List<VariableSubstitution> newArg = new LinkedList<VariableSubstitution>();
for (VariableSubstitution vs1 : arg) {
if (!vs1.getOldVar().getValue().equals(vi.getValue())) {
newArg.add(vs1);
}
}
return newArg;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitTypeDecl(TypeDecl td, List<VariableSubstitution> arg)
throws AsterixException {
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitRecordTypeDefiniton(RecordTypeDefinition tre,
List<VariableSubstitution> arg) throws AsterixException {
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitTypeReferenceExpression(TypeReferenceExpression tre,
List<VariableSubstitution> arg) throws AsterixException {
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitNodegroupDecl(NodegroupDecl ngd,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitLoadFromFileStatement(LoadFromFileStatement stmtLoad,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDropStatement(DropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitControlFeedStatement(ControlFeedStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
private List<GbyVariableExpressionPair> substInVarExprPair(List<GbyVariableExpressionPair> gbyVeList,
List<VariableSubstitution> arg, List<VariableSubstitution> newSubs) throws AsterixException {
List<GbyVariableExpressionPair> veList = new LinkedList<GbyVariableExpressionPair>();
for (GbyVariableExpressionPair vep : gbyVeList) {
VariableExpr oldGbyVar = vep.getVar();
VariableExpr newGbyVar = null;
if (oldGbyVar != null) {
VarIdentifier newVar = context.mapOldVarIdentifier(oldGbyVar.getVar());
newSubs = eliminateSubstFromList(newVar, newSubs);
newGbyVar = new VariableExpr(newVar);
}
Pair<IAqlExpression, List<VariableSubstitution>> p1 = vep.getExpr().accept(this, newSubs);
GbyVariableExpressionPair ve2 = new GbyVariableExpressionPair(newGbyVar, (Expression) p1.first);
veList.add(ve2);
}
return veList;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitWriteFromQueryResultStatement(
WriteFromQueryResultStatement stmtLoad, List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitCreateIndexStatement(CreateIndexStatement cis,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitUnionExpr(UnionExpr u, List<VariableSubstitution> arg)
throws AsterixException {
List<Expression> exprList = visitAndCloneExprList(u.getExprs(), arg);
UnionExpr newU = new UnionExpr(exprList);
return new Pair<IAqlExpression, List<VariableSubstitution>>(newU, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDistinctClause(DistinctClause dc,
List<VariableSubstitution> arg) throws AsterixException {
List<Expression> exprList = visitAndCloneExprList(dc.getDistinctByExpr(), arg);
DistinctClause dc2 = new DistinctClause(exprList);
return new Pair<IAqlExpression, List<VariableSubstitution>>(dc2, arg);
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitOrderedListTypeDefiniton(
OrderedListTypeDefinition olte, List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitUnorderedListTypeDefiniton(
UnorderedListTypeDefinition ulte, List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitInsertStatement(InsertStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDeleteStatement(DeleteStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitUpdateStatement(UpdateStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitUpdateClause(UpdateClause del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDataverseDecl(DataverseDecl dv,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitSetStatement(SetStatement ss,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitWriteStatement(WriteStatement ws,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDatasetDecl(DatasetDecl dd,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitLoadFromQueryResultStatement(
WriteFromQueryResultStatement stmtLoad, List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitCreateDataverseStatement(CreateDataverseStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitIndexDropStatement(IndexDropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitNodeGroupDropStatement(NodeGroupDropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitDataverseDropStatement(DataverseDropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitTypeDropStatement(TypeDropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visit(CreateFunctionStatement cfs,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitFunctionDropStatement(FunctionDropStatement del,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
@Override
public Pair<IAqlExpression, List<VariableSubstitution>> visitBeginFeedStatement(BeginFeedStatement bf,
List<VariableSubstitution> arg) throws AsterixException {
// TODO Auto-generated method stub
return null;
}
}