Class DependentAccessNode
- java.lang.Object
-
- org.teiid.query.processor.relational.RelationalNode
-
- org.teiid.query.processor.relational.SubqueryAwareRelationalNode
-
- org.teiid.query.processor.relational.AccessNode
-
- org.teiid.query.processor.relational.DependentAccessNode
-
- All Implemented Interfaces:
Cloneable
,BatchCollector.BatchProducer
public class DependentAccessNode extends AccessNode
Takes a query with 1 or more dependent sets from 1 or more sources and creates a series of commands. Dependent sets from the same source are treated as a special case. If there are multiple batches from that source, we will create replacement criteria in lock step - rather than forming the full cartesian product space. This implementation assumes that ordering will be respected above the access node and that the incoming dependent tuple values are already sorted.
-
-
Field Summary
-
Fields inherited from class org.teiid.query.processor.relational.AccessNode
info, nextCommand
-
Fields inherited from class org.teiid.query.processor.relational.RelationalNode
childCount
-
-
Constructor Summary
Constructors Constructor Description DependentAccessNode(int nodeID)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
clone()
All the implementation of Cloneable interface need to implement clone() method.void
closeDirect()
int
getMaxPredicates()
int
getMaxSetSize()
protected boolean
hasNextCommand()
boolean
isUseBindings()
protected Command
nextCommand()
protected boolean
prepareNextCommand(Command atomicCommand)
Boolean
requiresTransaction(boolean transactionalReads)
void
reset()
void
setComplexQuery(boolean complexQuery)
void
setMaxPredicates(int maxPredicates)
void
setMaxSetSize(int maxSize)
void
setPushdown(boolean pushdown)
void
setUseBindings(boolean useBindings)
-
Methods inherited from class org.teiid.query.processor.relational.AccessNode
addBatchRow, copyTo, getCommand, getConformedTo, getConnectorBindingExpression, getConnectorBindingId, getDescriptionProperties, getModelId, getModelName, getNodeString, getObjects, getOriginalSelect, getProjection, getSubPlans, initialize, isShouldEvaluate, minimizeProject, nextBatchDirect, open, processCommandsIndividually, setCommand, setConformedTo, setConnectorBindingExpression, setConnectorBindingId, setModelId, setModelName, setMultiSource, setShouldEvaluateExpressions, setSubPlans, setTransactionSupport
-
Methods inherited from class org.teiid.query.processor.relational.SubqueryAwareRelationalNode
getEvaluator, requiresTransaction, setReferenceValues
-
Methods inherited from class org.teiid.query.processor.relational.RelationalNode
addChild, close, copyTo, createLookupMap, getBatchSize, getBuffer, getBufferDirect, getBufferManager, getChildCount, getChildren, getClassName, getConnectionID, getContext, getDataManager, getElements, getEstimateNodeCardinality, getID, getNodeStatistics, getOutputElements, getParent, getProjectionIndexes, hasBuffer, hasPendingRows, isBatchFull, isClosed, isLastBatch, nextBatch, nodeToString, projectTuple, projectTuple, pullBatch, setContext, setElements, setEstimateDepAccessCardinality, setEstimateDepJoinCost, setEstimateJoinCost, setEstimateNodeCardinality, setEstimateNodeSetSize, setID, setParent, terminateBatches, toString, unwrapException
-
-
-
-
Method Detail
-
closeDirect
public void closeDirect()
- Overrides:
closeDirect
in classAccessNode
- See Also:
RelationalNode.close()
-
reset
public void reset()
- Overrides:
reset
in classAccessNode
-
nextCommand
protected Command nextCommand() throws TeiidProcessingException, TeiidComponentException
- Overrides:
nextCommand
in classAccessNode
- Throws:
TeiidProcessingException
TeiidComponentException
-
clone
public Object clone()
Description copied from class:RelationalNode
All the implementation of Cloneable interface need to implement clone() method. The plan is only clonable in the pre-execution stage, not the execution state (things like program state, result sets, etc). It's only safe to call that method in between query processings, in other words, it's only safe to call clone() on a plan after nextTuple() returns null, meaning the plan has finished processing.- Overrides:
clone
in classAccessNode
-
getMaxSetSize
public int getMaxSetSize()
- Returns:
- Returns the maxSize.
-
getMaxPredicates
public int getMaxPredicates()
-
setMaxPredicates
public void setMaxPredicates(int maxPredicates)
-
setMaxSetSize
public void setMaxSetSize(int maxSize)
- Parameters:
maxSize
- The maxSize to set.
-
prepareNextCommand
protected boolean prepareNextCommand(Command atomicCommand) throws TeiidComponentException, TeiidProcessingException
- Overrides:
prepareNextCommand
in classAccessNode
- Throws:
TeiidComponentException
TeiidProcessingException
- See Also:
AccessNode.prepareNextCommand(org.teiid.query.sql.lang.Command)
-
hasNextCommand
protected boolean hasNextCommand()
- Overrides:
hasNextCommand
in classAccessNode
- See Also:
AccessNode.hasNextCommand()
-
setPushdown
public void setPushdown(boolean pushdown)
-
requiresTransaction
public Boolean requiresTransaction(boolean transactionalReads)
- Overrides:
requiresTransaction
in classAccessNode
- Returns:
- true if required, false if not required, and null if a single source command is issued and a transaction may be needed.
-
isUseBindings
public boolean isUseBindings()
-
setUseBindings
public void setUseBindings(boolean useBindings)
-
setComplexQuery
public void setComplexQuery(boolean complexQuery)
-
-