Search in sources :

Example 21 with LetClause

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

the class DeepCopyVisitor method visit.

@Override
public SelectBlock visit(SelectBlock selectBlock, Void arg) throws CompilationException {
    FromClause fromClause = null;
    List<LetClause> letClauses = new ArrayList<>();
    WhereClause whereClause = null;
    GroupbyClause gbyClause = null;
    List<LetClause> gbyLetClauses = new ArrayList<>();
    HavingClause havingClause = null;
    SelectClause selectCluase;
    // "group by", "let"s, "having" and "select".
    if (selectBlock.hasFromClause()) {
        fromClause = (FromClause) selectBlock.getFromClause().accept(this, arg);
    }
    if (selectBlock.hasLetClauses()) {
        List<LetClause> letList = selectBlock.getLetList();
        for (LetClause letClause : letList) {
            letClauses.add((LetClause) letClause.accept(this, arg));
        }
    }
    if (selectBlock.hasWhereClause()) {
        whereClause = (WhereClause) selectBlock.getWhereClause().accept(this, arg);
    }
    if (selectBlock.hasGroupbyClause()) {
        gbyClause = (GroupbyClause) selectBlock.getGroupbyClause().accept(this, arg);
    }
    if (selectBlock.hasLetClausesAfterGroupby()) {
        List<LetClause> letListAfterGby = selectBlock.getLetListAfterGroupby();
        for (LetClause letClauseAfterGby : letListAfterGby) {
            gbyLetClauses.add((LetClause) letClauseAfterGby.accept(this, arg));
        }
    }
    if (selectBlock.hasHavingClause()) {
        havingClause = (HavingClause) selectBlock.getHavingClause().accept(this, arg);
    }
    selectCluase = (SelectClause) selectBlock.getSelectClause().accept(this, arg);
    return new SelectBlock(selectCluase, fromClause, letClauses, whereClause, gbyClause, gbyLetClauses, havingClause);
}
Also used : SelectClause(org.apache.asterix.lang.sqlpp.clause.SelectClause) GroupbyClause(org.apache.asterix.lang.common.clause.GroupbyClause) LetClause(org.apache.asterix.lang.common.clause.LetClause) SelectBlock(org.apache.asterix.lang.sqlpp.clause.SelectBlock) FromClause(org.apache.asterix.lang.sqlpp.clause.FromClause) HavingClause(org.apache.asterix.lang.sqlpp.clause.HavingClause) ArrayList(java.util.ArrayList) WhereClause(org.apache.asterix.lang.common.clause.WhereClause)

Example 22 with LetClause

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

the class DeepCopyVisitor method visit.

@Override
public SelectExpression visit(SelectExpression selectExpression, Void arg) throws CompilationException {
    List<LetClause> lets = new ArrayList<>();
    SelectSetOperation select;
    OrderbyClause orderby = null;
    LimitClause limit = null;
    // visit let list
    if (selectExpression.hasLetClauses()) {
        for (LetClause letClause : selectExpression.getLetList()) {
            lets.add((LetClause) letClause.accept(this, arg));
        }
    }
    // visit the main select.
    select = (SelectSetOperation) selectExpression.getSelectSetOperation().accept(this, arg);
    // visit order by
    if (selectExpression.hasOrderby()) {
        List<Expression> orderExprs = new ArrayList<>();
        for (Expression orderExpr : selectExpression.getOrderbyClause().getOrderbyList()) {
            orderExprs.add((Expression) orderExpr.accept(this, arg));
        }
        orderby = new OrderbyClause(orderExprs, selectExpression.getOrderbyClause().getModifierList());
    }
    // visit limit
    if (selectExpression.hasLimit()) {
        limit = (LimitClause) selectExpression.getLimitClause().accept(this, arg);
    }
    return new SelectExpression(lets, select, orderby, limit, selectExpression.isSubquery());
}
Also used : LimitClause(org.apache.asterix.lang.common.clause.LimitClause) LetClause(org.apache.asterix.lang.common.clause.LetClause) ILangExpression(org.apache.asterix.lang.common.base.ILangExpression) Expression(org.apache.asterix.lang.common.base.Expression) SelectExpression(org.apache.asterix.lang.sqlpp.expression.SelectExpression) CaseExpression(org.apache.asterix.lang.sqlpp.expression.CaseExpression) QuantifiedExpression(org.apache.asterix.lang.common.expression.QuantifiedExpression) SelectSetOperation(org.apache.asterix.lang.sqlpp.clause.SelectSetOperation) ArrayList(java.util.ArrayList) OrderbyClause(org.apache.asterix.lang.common.clause.OrderbyClause) SelectExpression(org.apache.asterix.lang.sqlpp.expression.SelectExpression)

Example 23 with LetClause

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

the class SqlppInlineUdfsVisitor method visit.

@Override
public Boolean visit(SelectExpression selectExpression, List<FunctionDecl> funcs) throws CompilationException {
    boolean changed = false;
    if (selectExpression.hasLetClauses()) {
        for (LetClause letClause : selectExpression.getLetList()) {
            changed |= letClause.accept(this, funcs);
        }
    }
    changed |= selectExpression.getSelectSetOperation().accept(this, funcs);
    if (selectExpression.hasOrderby()) {
        changed |= selectExpression.getOrderbyClause().accept(this, funcs);
    }
    if (selectExpression.hasLimit()) {
        changed |= selectExpression.getLimitClause().accept(this, funcs);
    }
    return changed;
}
Also used : LetClause(org.apache.asterix.lang.common.clause.LetClause)

Aggregations

LetClause (org.apache.asterix.lang.common.clause.LetClause)23 Expression (org.apache.asterix.lang.common.base.Expression)11 ArrayList (java.util.ArrayList)9 ILangExpression (org.apache.asterix.lang.common.base.ILangExpression)9 GroupbyClause (org.apache.asterix.lang.common.clause.GroupbyClause)8 VariableExpr (org.apache.asterix.lang.common.expression.VariableExpr)8 SelectExpression (org.apache.asterix.lang.sqlpp.expression.SelectExpression)7 WhereClause (org.apache.asterix.lang.common.clause.WhereClause)6 HashMap (java.util.HashMap)5 DistinctClause (org.apache.asterix.lang.aql.clause.DistinctClause)5 ForClause (org.apache.asterix.lang.aql.clause.ForClause)5 Clause (org.apache.asterix.lang.common.base.Clause)5 FLWOGRExpression (org.apache.asterix.lang.aql.expression.FLWOGRExpression)4 GbyVariableExpressionPair (org.apache.asterix.lang.common.expression.GbyVariableExpressionPair)4 VariableSubstitutionEnvironment (org.apache.asterix.lang.common.rewrites.VariableSubstitutionEnvironment)4 Pair (org.apache.hyracks.algebricks.common.utils.Pair)4 LimitClause (org.apache.asterix.lang.common.clause.LimitClause)3 OrderbyClause (org.apache.asterix.lang.common.clause.OrderbyClause)3 VarIdentifier (org.apache.asterix.lang.common.struct.VarIdentifier)3 FromClause (org.apache.asterix.lang.sqlpp.clause.FromClause)3