Search in sources :

Example 6 with WhereClause

use of org.apache.asterix.lang.common.clause.WhereClause in project asterixdb by apache.

the class AqlDeleteRewriteVisitor method visit.

@Override
public Void visit(DeleteStatement deleteStmt, Void visitArg) {
    List<Expression> arguments = new ArrayList<>();
    Identifier dataverseName = deleteStmt.getDataverseName();
    Identifier datasetName = deleteStmt.getDatasetName();
    String arg = dataverseName == null ? datasetName.getValue() : dataverseName.getValue() + "." + datasetName.getValue();
    LiteralExpr argumentLiteral = new LiteralExpr(new StringLiteral(arg));
    arguments.add(argumentLiteral);
    CallExpr callExpression = new CallExpr(new FunctionSignature(FunctionConstants.ASTERIX_NS, "dataset", 1), arguments);
    List<Clause> clauseList = new ArrayList<>();
    VariableExpr var = deleteStmt.getVariableExpr();
    Clause forClause = new ForClause(var, callExpression);
    clauseList.add(forClause);
    Clause whereClause = null;
    Expression condition = deleteStmt.getCondition();
    if (condition != null) {
        whereClause = new WhereClause(condition);
        clauseList.add(whereClause);
    }
    VariableExpr returnExpr = new VariableExpr(var.getVar());
    returnExpr.setIsNewVar(false);
    FLWOGRExpression flowgr = new FLWOGRExpression(clauseList, returnExpr);
    Query query = new Query(false);
    query.setBody(flowgr);
    deleteStmt.setQuery(query);
    return null;
}
Also used : Query(org.apache.asterix.lang.common.statement.Query) ArrayList(java.util.ArrayList) WhereClause(org.apache.asterix.lang.common.clause.WhereClause) FLWOGRExpression(org.apache.asterix.lang.aql.expression.FLWOGRExpression) ForClause(org.apache.asterix.lang.aql.clause.ForClause) FunctionSignature(org.apache.asterix.common.functions.FunctionSignature) Identifier(org.apache.asterix.lang.common.struct.Identifier) StringLiteral(org.apache.asterix.lang.common.literal.StringLiteral) Expression(org.apache.asterix.lang.common.base.Expression) FLWOGRExpression(org.apache.asterix.lang.aql.expression.FLWOGRExpression) LiteralExpr(org.apache.asterix.lang.common.expression.LiteralExpr) CallExpr(org.apache.asterix.lang.common.expression.CallExpr) VariableExpr(org.apache.asterix.lang.common.expression.VariableExpr) ForClause(org.apache.asterix.lang.aql.clause.ForClause) Clause(org.apache.asterix.lang.common.base.Clause) WhereClause(org.apache.asterix.lang.common.clause.WhereClause)

Aggregations

WhereClause (org.apache.asterix.lang.common.clause.WhereClause)6 ArrayList (java.util.ArrayList)5 Expression (org.apache.asterix.lang.common.base.Expression)3 GroupbyClause (org.apache.asterix.lang.common.clause.GroupbyClause)3 LetClause (org.apache.asterix.lang.common.clause.LetClause)3 FromClause (org.apache.asterix.lang.sqlpp.clause.FromClause)3 SelectBlock (org.apache.asterix.lang.sqlpp.clause.SelectBlock)3 SelectClause (org.apache.asterix.lang.sqlpp.clause.SelectClause)3 FunctionSignature (org.apache.asterix.common.functions.FunctionSignature)2 ForClause (org.apache.asterix.lang.aql.clause.ForClause)2 FLWOGRExpression (org.apache.asterix.lang.aql.expression.FLWOGRExpression)2 Clause (org.apache.asterix.lang.common.base.Clause)2 ILangExpression (org.apache.asterix.lang.common.base.ILangExpression)2 CallExpr (org.apache.asterix.lang.common.expression.CallExpr)2 LiteralExpr (org.apache.asterix.lang.common.expression.LiteralExpr)2 VariableExpr (org.apache.asterix.lang.common.expression.VariableExpr)2 StringLiteral (org.apache.asterix.lang.common.literal.StringLiteral)2 VariableSubstitutionEnvironment (org.apache.asterix.lang.common.rewrites.VariableSubstitutionEnvironment)2 Query (org.apache.asterix.lang.common.statement.Query)2 Identifier (org.apache.asterix.lang.common.struct.Identifier)2