Skip to content

feat(core): add context to RelVisitor, ExpressionVisitor and FuncArgVisitor #427

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,206 +1,206 @@
package io.substrait.expression;

public abstract class AbstractExpressionVisitor<OUTPUT, EXCEPTION extends Exception>
implements ExpressionVisitor<OUTPUT, EXCEPTION> {
public abstract OUTPUT visitFallback(Expression expr);
public abstract class AbstractExpressionVisitor<O, C, E extends Exception>
implements ExpressionVisitor<O, C, E> {
public abstract O visitFallback(Expression expr, C context);

@Override
public OUTPUT visit(Expression.NullLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.NullLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.BoolLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.BoolLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.I8Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.I8Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.I16Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.I16Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.I32Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.I32Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.I64Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.I64Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.FP32Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.FP32Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.FP64Literal expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.FP64Literal expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.StrLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.StrLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.BinaryLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.BinaryLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.TimeLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.TimeLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.DateLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.DateLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.TimestampLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.TimestampLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.TimestampTZLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.TimestampTZLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.PrecisionTimestampLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.PrecisionTimestampLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.PrecisionTimestampTZLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.PrecisionTimestampTZLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.IntervalYearLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.IntervalYearLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.IntervalDayLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.IntervalDayLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.IntervalCompoundLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.IntervalCompoundLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.UUIDLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.UUIDLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.FixedCharLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.FixedCharLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.VarCharLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.VarCharLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.FixedBinaryLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.FixedBinaryLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.DecimalLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.DecimalLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.MapLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.MapLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.EmptyMapLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.EmptyMapLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.ListLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.ListLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.EmptyListLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.EmptyListLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.StructLiteral expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.StructLiteral expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.Switch expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.Switch expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.IfThen expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.IfThen expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.ScalarFunctionInvocation expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.ScalarFunctionInvocation expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.WindowFunctionInvocation expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.WindowFunctionInvocation expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.Cast expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.Cast expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.SingleOrList expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.SingleOrList expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.MultiOrList expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.MultiOrList expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(FieldReference expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(FieldReference expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.SetPredicate expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.SetPredicate expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.ScalarSubquery expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.ScalarSubquery expr, C context) throws E {
return visitFallback(expr, context);
}

@Override
public OUTPUT visit(Expression.InPredicate expr) throws EXCEPTION {
return visitFallback(expr);
public O visit(Expression.InPredicate expr, C context) throws E {
return visitFallback(expr, context);
}
}
7 changes: 4 additions & 3 deletions core/src/main/java/io/substrait/expression/EnumArg.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ public interface EnumArg extends FunctionArg {
Optional<String> value();

@Override
default <R, E extends Throwable> R accept(
SimpleExtension.Function fnDef, int argIdx, FuncArgVisitor<R, E> fnArgVisitor) throws E {
return fnArgVisitor.visitEnumArg(fnDef, argIdx, this);
default <R, C, E extends Throwable> R accept(
SimpleExtension.Function fnDef, int argIdx, FuncArgVisitor<R, C, E> fnArgVisitor, C context)
throws E {
return fnArgVisitor.visitEnumArg(fnDef, argIdx, this, context);
}

static EnumArg of(SimpleExtension.EnumArgument enumArg, String option) {
Expand Down
Loading
Loading