public class ExtensionalDataNodeImpl extends DataNodeImpl<RelationPredicate> implements ExtensionalDataNode
iqFactory| Modifier and Type | Method and Description |
|---|---|
ExtensionalDataNode |
acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer)
"Accept" method for the "Visitor" pattern.
|
IQTree |
acceptTransformer(IQTreeVisitingTransformer transformer) |
<T> T |
acceptVisitor(IQVisitor<T> visitor) |
void |
acceptVisitor(QueryNodeVisitor visitor)
"Accept" method for the "Visitor" pattern.
|
IQTree |
applyFreshRenaming(InjectiveVar2VarSubstitution freshRenamingSubstitution)
Optimized to re-use the variable nullability.
|
ExtensionalDataNode |
clone()
See https://stackoverflow.com/questions/6837362/
|
VariableNullability |
getVariableNullability() |
com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> |
inferUniqueConstraints()
NOT guaranteed to return all the unique constraints (MAY BE INCOMPLETE)
Set of sets of determinants
|
boolean |
isDistinct()
Is distinct if it has at least one unique constraint
|
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
|
ExtensionalDataNode |
newAtom(DataAtom<RelationPredicate> newAtom)
Returns a new DataNode of the same type that will use the new atom
|
String |
toString() |
void |
validate() |
applyDescendingSubstitutionWithoutOptimizing, getKnownVariables, getLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariables, getProjectionAtom, getRequiredVariables, getVariables, isDeclaredAsEmptyapplyDescendingSubstitution, getChildren, getPossibleVariableDefinitions, getRootNode, isConstructed, isEquivalentTo, liftIncompatibleDefinitions, normalizeForOptimization, propagateDownConstraint, removeDistincts, replaceSubTreeequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetProjectionAtomgetRootNodeapplyDescendingSubstitution, applyDescendingSubstitutionWithoutOptimizing, getChildren, getKnownVariables, getPossibleVariableDefinitions, getVariables, isConstructed, isDeclaredAsEmpty, isEquivalentTo, isLeaf, liftIncompatibleDefinitions, normalizeForOptimization, propagateDownConstraint, removeDistincts, replaceSubTreegetVariablesgetLocallyDefinedVariables, getLocallyRequiredVariables, getLocalVariables, getRequiredVariablespublic void acceptVisitor(QueryNodeVisitor visitor)
QueryNodeacceptVisitor in interface QueryNodepublic ExtensionalDataNode clone()
QueryNodeImplclone in interface ExtensionalDataNodeclone in interface QueryNodeclone in class QueryNodeImplpublic ExtensionalDataNode acceptNodeTransformer(HomogeneousQueryNodeTransformer transformer) throws QueryNodeTransformationException
QueryNodeacceptNodeTransformer in interface LeafIQTreeacceptNodeTransformer in interface ExtensionalDataNodeacceptNodeTransformer in interface QueryNodeQueryNodeTransformationExceptionpublic ExtensionalDataNode newAtom(DataAtom<RelationPredicate> newAtom)
DataNodenewAtom in interface DataNode<RelationPredicate>newAtom in interface ExtensionalDataNodepublic boolean isVariableNullable(IntermediateQuery query, Variable variable)
QueryNodeisVariableNullable in interface QueryNodepublic IQTree acceptTransformer(IQTreeVisitingTransformer transformer)
acceptTransformer in interface IQTreepublic boolean isDistinct()
isDistinct in interface IQTreepublic <T> T acceptVisitor(IQVisitor<T> visitor)
acceptVisitor in interface IQTreepublic IQTree applyFreshRenaming(InjectiveVar2VarSubstitution freshRenamingSubstitution)
applyFreshRenaming in interface IQTreepublic VariableNullability getVariableNullability()
getVariableNullability in interface IQTreepublic void validate()
throws InvalidIntermediateQueryException
validate in interface IQTreeInvalidIntermediateQueryExceptionpublic com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> inferUniqueConstraints()
IQTreeinferUniqueConstraints in interface IQTreepublic boolean isSyntacticallyEquivalentTo(QueryNode node)
QueryNodeisSyntacticallyEquivalentTo in interface QueryNodepublic boolean isEquivalentTo(QueryNode queryNode)
QueryNodeisEquivalentTo in interface QueryNodeCopyright © 2009–2020 Free University of Bozen-Bolzano. All rights reserved.