public class LeftJoinNodeImpl extends JoinLikeNodeImpl implements LeftJoinNode
BinaryOrderedOperatorNode.ArgumentPositionsubstitutionFactory, substitutionTools, termFactory, typeFactory, unificationTools| Modifier and Type | Method and Description |
|---|---|
LeftJoinNode |
acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer)
"Accept" method for the "Visitor" pattern.
|
IQTree |
acceptTransformer(IQTree tree,
IQTreeVisitingTransformer transformer,
IQTree leftChild,
IQTree rightChild) |
<T> T |
acceptVisitor(IQVisitor<T> visitor,
IQTree leftChild,
IQTree rightChild) |
void |
acceptVisitor(QueryNodeVisitor visitor)
"Accept" method for the "Visitor" pattern.
|
IQTree |
applyDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution,
Optional<ImmutableExpression> constraint,
IQTree leftChild,
IQTree rightChild)
NB: the constraint is only propagate to the left child
|
IQTree |
applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution,
IQTree leftChild,
IQTree rightChild) |
IQTree |
applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution,
IQTree leftChild,
IQTree rightChild,
IQTreeCache treeCache) |
LeftJoinNode |
changeOptionalFilterCondition(Optional<ImmutableExpression> newOptionalFilterCondition)
Constructs a new JoinLikeNode with the following optional filter condition
(recall that a QueryNode is immutable).
|
LeftJoinNode |
clone()
See https://stackoverflow.com/questions/6837362/
|
com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> |
getPossibleVariableDefinitions(IQTree leftChild,
IQTree rightChild)
Returns possible definitions for left and right-specific variables.
|
VariableNullability |
getVariableNullability(IQTree leftChild,
IQTree rightChild)
Variable nullability for the full LJ tree
|
com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> |
inferUniqueConstraints(IQTree leftChild,
IQTree rightChild)
TODO: implement it seriously
|
boolean |
isConstructed(Variable variable,
IQTree leftChild,
IQTree rightChild) |
boolean |
isDistinct(IQTree leftChild,
IQTree rightChild) |
boolean |
isEquivalentTo(QueryNode queryNode)
Is syntactically equivalent
|
boolean |
isSyntacticallyEquivalentTo(QueryNode node)
TODO: explain
|
boolean |
isVariableNullable(IntermediateQuery query,
Variable variable)
Returns true if it cannot guarantee the projected variable to be non-null
Throws an IllegalArgumentException if the variable is not projected by the node
|
IQTree |
liftIncompatibleDefinitions(Variable variable,
IQTree leftChild,
IQTree rightChild,
VariableGenerator variableGenerator) |
IQTree |
normalizeForOptimization(IQTree initialLeftChild,
IQTree initialRightChild,
VariableGenerator variableGenerator,
IQProperties currentIQProperties) |
IQTree |
propagateDownConstraint(ImmutableExpression constraint,
IQTree leftChild,
IQTree rightChild) |
IQTree |
removeDistincts(IQTree leftChild,
IQTree rightChild,
IQProperties properties) |
String |
toString() |
void |
validateNode(IQTree leftChild,
IQTree rightChild)
Only validates the node, not its children
|
checkNonProjectedVariables, getRequiredVariablescheckExpression, getLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariables, getNullabilityEvaluator, getOptionalFilterCondition, getOptionalFilterString, isFilteringNullValueequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetOptionalFilterConditiongetLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariables, getRequiredVariablespublic void acceptVisitor(QueryNodeVisitor visitor)
QueryNodeacceptVisitor in interface QueryNodepublic LeftJoinNode clone()
QueryNodeImplclone in interface LeftJoinNodeclone in interface QueryNodeclone in class QueryNodeImplpublic LeftJoinNode acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer) throws QueryNodeTransformationException
QueryNodeacceptNodeTransformer in interface BinaryNonCommutativeOperatorNodeacceptNodeTransformer in interface LeftJoinNodeacceptNodeTransformer in interface QueryNodeQueryNodeTransformationExceptionpublic LeftJoinNode changeOptionalFilterCondition(Optional<ImmutableExpression> newOptionalFilterCondition)
JoinLikeNodechangeOptionalFilterCondition in interface JoinLikeNodechangeOptionalFilterCondition in interface LeftJoinNodepublic boolean isVariableNullable(IntermediateQuery query, Variable variable)
QueryNodeisVariableNullable in interface QueryNodepublic boolean isSyntacticallyEquivalentTo(QueryNode node)
QueryNodeisSyntacticallyEquivalentTo in interface QueryNodepublic boolean isEquivalentTo(QueryNode queryNode)
QueryNodeisEquivalentTo in interface QueryNodepublic VariableNullability getVariableNullability(IQTree leftChild, IQTree rightChild)
getVariableNullability in interface BinaryOrderedOperatorNodepublic com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> getPossibleVariableDefinitions(IQTree leftChild, IQTree rightChild)
getPossibleVariableDefinitions in interface BinaryOrderedOperatorNodepublic IQTree acceptTransformer(IQTree tree, IQTreeVisitingTransformer transformer, IQTree leftChild, IQTree rightChild)
acceptTransformer in interface BinaryOrderedOperatorNodepublic <T> T acceptVisitor(IQVisitor<T> visitor, IQTree leftChild, IQTree rightChild)
acceptVisitor in interface BinaryOrderedOperatorNodepublic IQTree normalizeForOptimization(IQTree initialLeftChild, IQTree initialRightChild, VariableGenerator variableGenerator, IQProperties currentIQProperties)
normalizeForOptimization in interface BinaryOrderedOperatorNodepublic IQTree liftIncompatibleDefinitions(Variable variable, IQTree leftChild, IQTree rightChild, VariableGenerator variableGenerator)
liftIncompatibleDefinitions in interface BinaryOrderedOperatorNodepublic IQTree applyDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, Optional<ImmutableExpression> constraint, IQTree leftChild, IQTree rightChild)
applyDescendingSubstitution in interface BinaryOrderedOperatorNodepublic IQTree applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, IQTree leftChild, IQTree rightChild)
applyDescendingSubstitutionWithoutOptimizing in interface BinaryOrderedOperatorNodepublic IQTree applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution, IQTree leftChild, IQTree rightChild, IQTreeCache treeCache)
applyFreshRenaming in interface BinaryOrderedOperatorNodepublic boolean isConstructed(Variable variable, IQTree leftChild, IQTree rightChild)
isConstructed in interface BinaryOrderedOperatorNodepublic boolean isDistinct(IQTree leftChild, IQTree rightChild)
isDistinct in interface BinaryOrderedOperatorNodepublic IQTree propagateDownConstraint(ImmutableExpression constraint, IQTree leftChild, IQTree rightChild)
propagateDownConstraint in interface BinaryOrderedOperatorNodepublic void validateNode(IQTree leftChild, IQTree rightChild) throws InvalidIntermediateQueryException
BinaryOrderedOperatorNodevalidateNode in interface BinaryOrderedOperatorNodeInvalidIntermediateQueryExceptionpublic IQTree removeDistincts(IQTree leftChild, IQTree rightChild, IQProperties properties)
removeDistincts in interface BinaryOrderedOperatorNodepublic com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> inferUniqueConstraints(IQTree leftChild, IQTree rightChild)
inferUniqueConstraints in interface BinaryOrderedOperatorNodeCopyright © 2009–2020 Free University of Bozen-Bolzano. All rights reserved.