Package com.blazebit.persistence.impl
Class ConjunctionPathExpressionFindingVisitor
java.lang.Object
com.blazebit.persistence.parser.expression.AbortableVisitorAdapter
com.blazebit.persistence.impl.ConjunctionPathExpressionFindingVisitor
- All Implemented Interfaces:
Expression.ResultVisitor<Boolean>
Finds a PathExpression, and while traversing back along the stack, capture if we are in a disjunction.
This is necessary for the EXISTS subquery rewrite for associations used in the ON clause.
We must know, if the association represented by the path expression, is used in a context,
where the cardinality 0 might be problematic. In a disjunctive or null aware context, cardinality is important.
We say, it is "inConjunction" if the path expression is used in no disjunctive or null aware context.
- Since:
- 1.4.0
- Author:
- Christian Beikov
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
isInConjunction
(CompoundPredicate predicate, PathExpression pathExpression) visit
(FunctionExpression expression) visit
(PathExpression expression) visit
(CompoundPredicate predicate) visit
(IsNullPredicate predicate) Methods inherited from class com.blazebit.persistence.parser.expression.AbortableVisitorAdapter
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
Constructor Details
-
ConjunctionPathExpressionFindingVisitor
public ConjunctionPathExpressionFindingVisitor()
-
-
Method Details
-
isInConjunction
-
visit
- Specified by:
visit
in interfaceExpression.ResultVisitor<Boolean>
- Overrides:
visit
in classAbortableVisitorAdapter
-
visit
- Specified by:
visit
in interfaceExpression.ResultVisitor<Boolean>
- Overrides:
visit
in classAbortableVisitorAdapter
-
visit
- Specified by:
visit
in interfaceExpression.ResultVisitor<Boolean>
- Overrides:
visit
in classAbortableVisitorAdapter
-
visit
- Specified by:
visit
in interfaceExpression.ResultVisitor<Boolean>
- Overrides:
visit
in classAbortableVisitorAdapter
-