Search in sources :

Example 1 with JoinClause

use of org.apache.asterix.lang.sqlpp.clause.JoinClause in project asterixdb by apache.

the class DeepCopyVisitor method visit.

@Override
public JoinClause visit(JoinClause joinClause, Void arg) throws CompilationException {
    Expression rightExpression = (Expression) joinClause.getRightExpression().accept(this, arg);
    VariableExpr rightVar = (VariableExpr) joinClause.getRightVariable().accept(this, arg);
    VariableExpr rightPositionVar = joinClause.getPositionalVariable() == null ? null : (VariableExpr) joinClause.getPositionalVariable().accept(this, arg);
    Expression conditionExpresion = (Expression) joinClause.getConditionExpression().accept(this, arg);
    return new JoinClause(joinClause.getJoinType(), rightExpression, rightVar, rightPositionVar, conditionExpresion);
}
Also used : 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) VariableExpr(org.apache.asterix.lang.common.expression.VariableExpr) JoinClause(org.apache.asterix.lang.sqlpp.clause.JoinClause)

Example 2 with JoinClause

use of org.apache.asterix.lang.sqlpp.clause.JoinClause in project asterixdb by apache.

the class SqlppCloneAndSubstituteVariablesVisitor method visit.

@Override
public Pair<ILangExpression, VariableSubstitutionEnvironment> visit(JoinClause joinClause, VariableSubstitutionEnvironment env) throws CompilationException {
    VariableExpr rightVar = joinClause.getRightVariable();
    VariableExpr newRightVar = generateNewVariable(context, rightVar);
    VariableExpr newRightPosVar = joinClause.hasPositionalVariable() ? generateNewVariable(context, joinClause.getPositionalVariable()) : null;
    // Visits the right expression.
    Expression newRightExpr = (Expression) visitUnnesBindingExpression(joinClause.getRightExpression(), env).first;
    // Visits the condition.
    VariableSubstitutionEnvironment currentEnv = new VariableSubstitutionEnvironment(env);
    currentEnv.removeSubstitution(newRightVar);
    if (newRightPosVar != null) {
        currentEnv.removeSubstitution(newRightPosVar);
    }
    // The condition can refer to the newRightVar and newRightPosVar.
    Expression conditionExpr = (Expression) joinClause.getConditionExpression().accept(this, currentEnv).first;
    JoinClause newJoinClause = new JoinClause(joinClause.getJoinType(), newRightExpr, newRightVar, newRightPosVar, conditionExpr);
    return new Pair<>(newJoinClause, currentEnv);
}
Also used : VariableSubstitutionEnvironment(org.apache.asterix.lang.common.rewrites.VariableSubstitutionEnvironment) ILangExpression(org.apache.asterix.lang.common.base.ILangExpression) CaseExpression(org.apache.asterix.lang.sqlpp.expression.CaseExpression) Expression(org.apache.asterix.lang.common.base.Expression) SelectExpression(org.apache.asterix.lang.sqlpp.expression.SelectExpression) VariableExpr(org.apache.asterix.lang.common.expression.VariableExpr) JoinClause(org.apache.asterix.lang.sqlpp.clause.JoinClause) Pair(org.apache.hyracks.algebricks.common.utils.Pair)

Aggregations

Expression (org.apache.asterix.lang.common.base.Expression)2 ILangExpression (org.apache.asterix.lang.common.base.ILangExpression)2 VariableExpr (org.apache.asterix.lang.common.expression.VariableExpr)2 JoinClause (org.apache.asterix.lang.sqlpp.clause.JoinClause)2 CaseExpression (org.apache.asterix.lang.sqlpp.expression.CaseExpression)2 SelectExpression (org.apache.asterix.lang.sqlpp.expression.SelectExpression)2 QuantifiedExpression (org.apache.asterix.lang.common.expression.QuantifiedExpression)1 VariableSubstitutionEnvironment (org.apache.asterix.lang.common.rewrites.VariableSubstitutionEnvironment)1 Pair (org.apache.hyracks.algebricks.common.utils.Pair)1