public abstract class AbstractColumnAggregatorNode<Domain,Accumulator,AggregateResult> extends SingleInputNode implements Clearable, IAggregatorNode
Direct children are not supported, use via outer join indexers instead.
There are both timeless and timely implementations.
| Modifier and Type | Class and Description |
|---|---|
protected class |
AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer
A special non-iterable index that checks a suspected aggregate value for a given signature.
|
protected class |
AbstractColumnAggregatorNode.AggregatorOuterIndexer
A special non-iterable index that retrieves the aggregated, packed result (signature+aggregate) for the original
signature.
|
protected static class |
AbstractColumnAggregatorNode.NetworkStructureChangeSensitiveLogic |
| Modifier and Type | Field and Description |
|---|---|
protected AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer[] |
aggregatorOuterIdentityIndexers |
protected AbstractColumnAggregatorNode.AggregatorOuterIndexer |
aggregatorOuterIndexer |
protected TupleMask |
columnMask |
protected TupleMask |
groupMask |
protected AggregateResult |
NEUTRAL |
protected IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> |
operator |
protected IQueryRuntimeContext |
runtimeContext |
protected int |
sourceWidth |
mailbox, parentchildMailboxes, childrennodeId, reteContainer, tag, traceInfos| Constructor and Description |
|---|
AbstractColumnAggregatorNode(ReteContainer reteContainer,
IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator,
TupleMask groupMask,
int aggregatedColumn)
Creates a new column aggregator node.
|
AbstractColumnAggregatorNode(ReteContainer reteContainer,
IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator,
TupleMask groupMask,
TupleMask columnMask)
Creates a new column aggregator node.
|
| Modifier and Type | Method and Description |
|---|---|
void |
appendChild(Receiver receiver)
appends a receiver that will continously receive insert and revoke updates from this supplier
|
abstract AggregateResult |
getAggregateResult(Tuple key) |
abstract java.util.Map<AggregateResult,Timeline<Timestamp>> |
getAggregateResultTimeline(Tuple key) |
abstract Tuple |
getAggregateTuple(Tuple key) |
abstract java.util.Map<Tuple,Timeline<Timestamp>> |
getAggregateTupleTimeline(Tuple key) |
Indexer |
getAggregatorOuterIdentityIndexer(int resultPositionInSignature) |
Indexer |
getAggregatorOuterIndexer() |
CommunicationTracker |
getCommunicationTracker() |
void |
propagate(Direction direction,
Tuple group,
AggregateResult value,
Timestamp timestamp) |
void |
propagateAggregateResultUpdate(Tuple group,
AggregateResult oldValue,
AggregateResult newValue,
Timestamp timestamp) |
void |
pullInto(java.util.Collection<Tuple> collector,
boolean flush)
Pulls the contents of this object in this particular moment into a target collection.
|
void |
pullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector,
boolean flush) |
protected Tuple |
tupleFromAggregateResult(Tuple groupTuple,
AggregateResult aggregateResult) |
appendParent, assignTraceInfo, getMailbox, getParents, instantiateMailbox, propagatePullInto, propagatePullIntoWithTimestamp, removeParentconstructIndex, getChildMailboxes, getPulledContents, getReceivers, issueError, networkStructureChanged, propagateUpdate, removeChildacceptPropagatedTraceInfo, getContainer, getNodeId, getTag, getTraceInfoPatternsEnumerated, getTraceInfos, setTag, toString, toStringCoreclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitconstructIndex, getPulledContents, getPulledContents, getReceivers, removeChildbatchUpdate, updateacceptPropagatedTraceInfo, getContainer, getNodeId, getTag, getTraceInfos, setTagprotected final IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator
protected final TupleMask groupMask
protected final TupleMask columnMask
protected final int sourceWidth
protected final IQueryRuntimeContext runtimeContext
protected final AggregateResult NEUTRAL
protected AbstractColumnAggregatorNode.AggregatorOuterIndexer aggregatorOuterIndexer
protected AbstractColumnAggregatorNode.AggregatorOuterIdentityIndexer[] aggregatorOuterIdentityIndexers
public AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, TupleMask columnMask)
reteContainer - the RETE container of the nodeoperator - the aggregation operatordeleteRederiveEvaluation - true if the node should run in DRED mode, false otherwisegroupMask - the mask that masks a tuple to obtain the key that we are grouping-bycolumnMask - the mask that masks a tuple to obtain the tuple element(s) that we are aggregating overposetComparator - the poset comparator for the column, if known, otherwise it can be nullpublic AbstractColumnAggregatorNode(ReteContainer reteContainer, IMultisetAggregationOperator<Domain,Accumulator,AggregateResult> operator, TupleMask groupMask, int aggregatedColumn)
reteContainer - the RETE container of the nodeoperator - the aggregation operatorgroupMask - the mask that masks a tuple to obtain the key that we are grouping-byaggregatedColumn - the index of the column that the aggregator node is aggregating overpublic CommunicationTracker getCommunicationTracker()
getCommunicationTracker in interface NodegetCommunicationTracker in class SingleInputNodepublic void pullInto(java.util.Collection<Tuple> collector, boolean flush)
Supplierpublic void pullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector, boolean flush)
pullIntoWithTimeline in interface Supplierpublic void appendChild(Receiver receiver)
SupplierappendChild in interface SupplierappendChild in class StandardNodepublic Indexer getAggregatorOuterIndexer()
getAggregatorOuterIndexer in interface IAggregatorNodepublic Indexer getAggregatorOuterIdentityIndexer(int resultPositionInSignature)
getAggregatorOuterIdentityIndexer in interface IAggregatorNodepublic void propagateAggregateResultUpdate(Tuple group, AggregateResult oldValue, AggregateResult newValue, Timestamp timestamp)
public void propagate(Direction direction, Tuple group, AggregateResult value, Timestamp timestamp)
public abstract java.util.Map<Tuple,Timeline<Timestamp>> getAggregateTupleTimeline(Tuple key)
public abstract AggregateResult getAggregateResult(Tuple key)
public abstract java.util.Map<AggregateResult,Timeline<Timestamp>> getAggregateResultTimeline(Tuple key)
protected Tuple tupleFromAggregateResult(Tuple groupTuple, AggregateResult aggregateResult)