Package io.substrait.relation
Class RelCopyOnWriteVisitor<E extends Exception>
java.lang.Object
io.substrait.relation.RelCopyOnWriteVisitor<E>
- All Implemented Interfaces:
RelVisitor<Optional<Rel>,EmptyVisitationContext, E>
public class RelCopyOnWriteVisitor<E extends Exception>
extends Object
implements RelVisitor<Optional<Rel>,EmptyVisitationContext,E>
Class used to visit all child relations from a root relation and optionally replace subtrees by
overriding a visitor method. The traversal will include relations inside of subquery expressions.
By default, no subtree substitution will be performed. However, if a visit method is overridden
to return a non-empty optional value, then that value will replace the relation in the tree.
-
Constructor Summary
ConstructorsConstructorDescriptionRelCopyOnWriteVisitor(ExpressionCopyOnWriteVisitor<E> expressionCopyOnWriteVisitor) -
Method Summary
Modifier and TypeMethodDescriptionprotected ExpressionCopyOnWriteVisitor<E>visit(Aggregate aggregate, EmptyVisitationContext context) Visit an aggregate relation.visit(ConsistentPartitionWindow consistentPartitionWindow, EmptyVisitationContext context) Visit a consistent partition window relation.visit(Cross cross, EmptyVisitationContext context) Visit a cross product relation.visit(Expand expand, EmptyVisitationContext context) Visit an expand relation (e.g., generators).visit(ExtensionDdl ddl, EmptyVisitationContext context) Visit an extension DDL relation.visit(ExtensionLeaf extensionLeaf, EmptyVisitationContext context) Visit an extension leaf relation.visit(ExtensionMulti extensionMulti, EmptyVisitationContext context) Visit an extension multi-input relation.visit(ExtensionSingle extensionSingle, EmptyVisitationContext context) Visit an extension single-input relation.visit(ExtensionTable extensionTable, EmptyVisitationContext context) Visit an extension table relation.visit(ExtensionWrite write, EmptyVisitationContext context) Visit an extension write relation.visit(Fetch fetch, EmptyVisitationContext context) Visit a fetch (limit/offset) relation.visit(Filter filter, EmptyVisitationContext context) Visit a filter relation.visit(Join join, EmptyVisitationContext context) Visit a logical join relation.visit(LocalFiles localFiles, EmptyVisitationContext context) Visit a local files scan relation.visit(NamedDdl ddl, EmptyVisitationContext context) Visit a named DDL relation.visit(NamedScan namedScan, EmptyVisitationContext context) Visit a named scan relation.visit(NamedUpdate update, EmptyVisitationContext context) Visit a named update relation.visit(NamedWrite write, EmptyVisitationContext context) Visit a named write relation.visit(BroadcastExchange exchange, EmptyVisitationContext context) Visit a broadcast exchange relation.visit(HashJoin hashJoin, EmptyVisitationContext context) Visit a physical hash join relation.visit(MergeJoin mergeJoin, EmptyVisitationContext context) Visit a physical merge join relation.visit(MultiBucketExchange exchange, EmptyVisitationContext context) Visit a multi-bucket exchange relation.visit(NestedLoopJoin nestedLoopJoin, EmptyVisitationContext context) Visit a physical nested loop join relation.visit(RoundRobinExchange exchange, EmptyVisitationContext context) Visit a round-robin exchange relation.visit(ScatterExchange exchange, EmptyVisitationContext context) Visit a scatter exchange relation.visit(SingleBucketExchange exchange, EmptyVisitationContext context) Visit a single-bucket exchange relation.visit(Project project, EmptyVisitationContext context) Visit a project relation.visit(Set set, EmptyVisitationContext context) Visit a set operation relation (e.g., UNION/INTERSECT).visit(Sort sort, EmptyVisitationContext context) Visit a sort relation.visit(VirtualTableScan virtualTableScan, EmptyVisitationContext context) Visit a virtual table scan relation.protected Optional<AggregateFunctionInvocation>protected Optional<List<Expression>>visitExprList(List<Expression> exprs, EmptyVisitationContext context) visitFieldReference(FieldReference fieldReference, EmptyVisitationContext context) protected Optional<List<FunctionArg>>visitFunctionArguments(List<FunctionArg> funcArgs, EmptyVisitationContext context) protected Optional<Aggregate.Grouping>visitGrouping(Aggregate.Grouping grouping, EmptyVisitationContext context) protected Optional<Aggregate.Measure>visitMeasure(Aggregate.Measure measure, EmptyVisitationContext context) protected Optional<Expression.SortField>visitSortField(Expression.SortField sortField, EmptyVisitationContext context) protected Optional<AbstractUpdate.TransformExpression>visitTransformExpression(AbstractUpdate.TransformExpression transform, EmptyVisitationContext context) visitWindowRelFunction(ConsistentPartitionWindow.WindowRelFunctionInvocation windowRelFunctionInvocation, EmptyVisitationContext context)
-
Constructor Details
-
RelCopyOnWriteVisitor
public RelCopyOnWriteVisitor() -
RelCopyOnWriteVisitor
-
RelCopyOnWriteVisitor
-
-
Method Details
-
getExpressionCopyOnWriteVisitor
-
visit
Description copied from interface:RelVisitorVisit an aggregate relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
aggregate- the aggregate nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visitGrouping
protected Optional<Aggregate.Grouping> visitGrouping(Aggregate.Grouping grouping, EmptyVisitationContext context) throws E -
visitMeasure
protected Optional<Aggregate.Measure> visitMeasure(Aggregate.Measure measure, EmptyVisitationContext context) throws E -
visitAggregateFunction
protected Optional<AggregateFunctionInvocation> visitAggregateFunction(AggregateFunctionInvocation afi, EmptyVisitationContext context) throws E -
visit
Description copied from interface:RelVisitorVisit a fetch (limit/offset) relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
fetch- the fetch nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a filter relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
filter- the filter nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a logical join relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
join- the join nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a set operation relation (e.g., UNION/INTERSECT).- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
set- the set nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a named scan relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
namedScan- the named scan nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a local files scan relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
localFiles- the local files nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a project relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
project- the project nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an expand relation (e.g., generators).- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
expand- the expand nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a named write relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
write- the named write nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an extension write relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
write- the extension write nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a named DDL relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
ddl- the named DDL nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an extension DDL relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
ddl- the extension DDL nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visitTransformExpression
protected Optional<AbstractUpdate.TransformExpression> visitTransformExpression(AbstractUpdate.TransformExpression transform, EmptyVisitationContext context) throws E -
visit
Description copied from interface:RelVisitorVisit a named update relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
update- the named update nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a scatter exchange relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
exchange- the scatter exchange nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a single-bucket exchange relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
exchange- the single-bucket exchange nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a multi-bucket exchange relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
exchange- the multi-bucket exchange nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a round-robin exchange relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
exchange- the round-robin exchange nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a broadcast exchange relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
exchange- the broadcast exchange nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a sort relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
sort- the sort nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a cross product relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
cross- the cross nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
public Optional<Rel> visit(VirtualTableScan virtualTableScan, EmptyVisitationContext context) throws E Description copied from interface:RelVisitorVisit a virtual table scan relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
virtualTableScan- the virtual table scan nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an extension leaf relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
extensionLeaf- the extension leaf nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
public Optional<Rel> visit(ExtensionSingle extensionSingle, EmptyVisitationContext context) throws E Description copied from interface:RelVisitorVisit an extension single-input relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
extensionSingle- the extension single nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an extension multi-input relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
extensionMulti- the extension multi nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit an extension table relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
extensionTable- the extension table nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a physical hash join relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
hashJoin- the hash join nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a physical merge join relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
mergeJoin- the merge join nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
Description copied from interface:RelVisitorVisit a physical nested loop join relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
nestedLoopJoin- the nested loop join nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visit
public Optional<Rel> visit(ConsistentPartitionWindow consistentPartitionWindow, EmptyVisitationContext context) throws E Description copied from interface:RelVisitorVisit a consistent partition window relation.- Specified by:
visitin interfaceRelVisitor<Optional<Rel>,EmptyVisitationContext, E extends Exception> - Parameters:
consistentPartitionWindow- the window nodecontext- visitation context- Returns:
- visit result
- Throws:
E- on visit failure
-
visitWindowRelFunction
protected Optional<ConsistentPartitionWindow.WindowRelFunctionInvocation> visitWindowRelFunction(ConsistentPartitionWindow.WindowRelFunctionInvocation windowRelFunctionInvocation, EmptyVisitationContext context) throws E -
visitExprList
protected Optional<List<Expression>> visitExprList(List<Expression> exprs, EmptyVisitationContext context) throws E -
visitFieldReference
public Optional<FieldReference> visitFieldReference(FieldReference fieldReference, EmptyVisitationContext context) throws E -
visitFunctionArguments
protected Optional<List<FunctionArg>> visitFunctionArguments(List<FunctionArg> funcArgs, EmptyVisitationContext context) throws E -
visitSortField
protected Optional<Expression.SortField> visitSortField(Expression.SortField sortField, EmptyVisitationContext context) throws E
-