public class FilterNodeImpl extends JoinOrFilterNodeImpl implements FilterNode
substitutionFactory, substitutionTools, termFactory, typeFactory, unificationTools| Modifier and Type | Method and Description |
|---|---|
FilterNode |
acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer)
"Accept" method for the "Visitor" pattern.
|
IQTree |
acceptTransformer(IQTree tree,
IQTreeVisitingTransformer transformer,
IQTree child) |
<T> T |
acceptVisitor(IQVisitor<T> visitor,
IQTree child) |
void |
acceptVisitor(QueryNodeVisitor visitor)
"Accept" method for the "Visitor" pattern.
|
IQTree |
applyDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution,
Optional<ImmutableExpression> constraint,
IQTree child) |
IQTree |
applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution,
IQTree child) |
IQTree |
applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution,
IQTree child,
IQTreeCache treeCache) |
FilterNode |
changeFilterCondition(ImmutableExpression newFilterCondition)
Returns a new FilterNode (immutable).
|
FilterNode |
clone()
See https://stackoverflow.com/questions/6837362/
|
ImmutableExpression |
getFilterCondition()
Not optional for a FilterNode.
|
com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> |
getPossibleVariableDefinitions(IQTree child) |
com.google.common.collect.ImmutableSet<Variable> |
getRequiredVariables(IntermediateQuery query)
Set of variables which, individually, must be provided by at least one child,
INDEPENDENTLY OF THE REQUIREMENTS OF THIS NODE'S ANCESTORS.
|
VariableNullability |
getVariableNullability(IQTree child) |
com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> |
inferUniqueConstraints(IQTree child) |
boolean |
isConstructed(Variable variable,
IQTree child) |
boolean |
isDistinct(IQTree child)
TODO: detect minus encodings
|
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 child,
VariableGenerator variableGenerator) |
IQTree |
normalizeForOptimization(IQTree initialChild,
VariableGenerator variableGenerator,
IQProperties currentIQProperties)
TODO: Optimization: lift direct construction and filter nodes before normalizing them
(so as to reduce the recursive pressure)
|
IQTree |
propagateDownConstraint(ImmutableExpression constraint,
IQTree child) |
IQTree |
removeDistincts(IQTree child,
IQProperties iqProperties) |
String |
toString() |
void |
validateNode(IQTree child)
Only validates the node, not its child
|
checkExpression, getLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariables, getNullabilityEvaluator, getOptionalFilterCondition, getOptionalFilterString, isFilteringNullValueequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetOptionalFilterConditiongetLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariablespublic void acceptVisitor(QueryNodeVisitor visitor)
QueryNodeacceptVisitor in interface QueryNodepublic FilterNode clone()
QueryNodeImplclone in interface FilterNodeclone in interface QueryNodeclone in class QueryNodeImplpublic FilterNode acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer) throws QueryNodeTransformationException
QueryNodeacceptNodeTransformer in interface FilterNodeacceptNodeTransformer in interface QueryNodeacceptNodeTransformer in interface UnaryOperatorNodeQueryNodeTransformationExceptionpublic ImmutableExpression getFilterCondition()
FilterNodegetFilterCondition in interface FilterNodepublic FilterNode changeFilterCondition(ImmutableExpression newFilterCondition)
FilterNodechangeFilterCondition in interface FilterNodepublic boolean isVariableNullable(IntermediateQuery query, Variable variable)
QueryNodeisVariableNullable in interface QueryNodepublic VariableNullability getVariableNullability(IQTree child)
getVariableNullability in interface UnaryOperatorNodepublic IQTree liftIncompatibleDefinitions(Variable variable, IQTree child, VariableGenerator variableGenerator)
liftIncompatibleDefinitions in interface UnaryOperatorNodepublic IQTree propagateDownConstraint(ImmutableExpression constraint, IQTree child)
propagateDownConstraint in interface UnaryOperatorNodepublic IQTree acceptTransformer(IQTree tree, IQTreeVisitingTransformer transformer, IQTree child)
acceptTransformer in interface UnaryOperatorNodepublic <T> T acceptVisitor(IQVisitor<T> visitor, IQTree child)
acceptVisitor in interface UnaryOperatorNodepublic void validateNode(IQTree child) throws InvalidIntermediateQueryException
UnaryOperatorNodevalidateNode in interface UnaryOperatorNodeInvalidIntermediateQueryExceptionpublic com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> getPossibleVariableDefinitions(IQTree child)
getPossibleVariableDefinitions in interface UnaryOperatorNodepublic IQTree removeDistincts(IQTree child, IQProperties iqProperties)
removeDistincts in interface UnaryOperatorNodepublic com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> inferUniqueConstraints(IQTree child)
inferUniqueConstraints in interface UnaryOperatorNodepublic boolean isConstructed(Variable variable, IQTree child)
isConstructed in interface UnaryOperatorNodepublic boolean isDistinct(IQTree child)
isDistinct in interface UnaryOperatorNodepublic boolean isSyntacticallyEquivalentTo(QueryNode node)
QueryNodeisSyntacticallyEquivalentTo in interface QueryNodepublic com.google.common.collect.ImmutableSet<Variable> getRequiredVariables(IntermediateQuery query)
QueryNodegetRequiredVariables in interface QueryNodepublic boolean isEquivalentTo(QueryNode queryNode)
QueryNodeisEquivalentTo in interface QueryNodepublic IQTree normalizeForOptimization(IQTree initialChild, VariableGenerator variableGenerator, IQProperties currentIQProperties)
normalizeForOptimization in interface UnaryOperatorNodepublic IQTree applyDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, Optional<ImmutableExpression> constraint, IQTree child)
applyDescendingSubstitution in interface UnaryOperatorNodepublic IQTree applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, IQTree child)
applyDescendingSubstitutionWithoutOptimizing in interface UnaryOperatorNodepublic IQTree applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution, IQTree child, IQTreeCache treeCache)
applyFreshRenaming in interface UnaryOperatorNodeCopyright © 2009–2020 Free University of Bozen-Bolzano. All rights reserved.