|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.derby.impl.sql.execute.SystemAggregator
org.apache.derby.impl.sql.execute.OrderableAggregator
Abstract aggregator for Orderable aggregates (max/min).
Field Summary | |
protected DataValueDescriptor |
value
|
Constructor Summary | |
(package private) |
OrderableAggregator()
|
Method Summary | |
protected abstract void |
accumulate(DataValueDescriptor addend)
|
void |
accumulate(DataValueDescriptor addend,
java.lang.Object ga)
Iteratively accumulates the addend into the aggregator. |
boolean |
didEliminateNulls()
Return true if the aggregation eliminated at least one null from the input data set. |
java.lang.Object |
getResult()
Return the result of the operations that we have been performing. |
void |
merge(ExecAggregator addend)
Merges one aggregator into a another aggregator. |
void |
readExternal(java.io.ObjectInput in)
|
void |
setup(java.lang.String aggregateName)
Set's up the aggregate for processing. |
void |
writeExternal(java.io.ObjectOutput out)
Although we are not expected to be persistent per se, we may be written out by the sorter temporarily. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.apache.derby.iapi.sql.execute.ExecAggregator |
newAggregator |
Methods inherited from interface org.apache.derby.iapi.services.io.TypedFormat |
getTypeFormatId |
Field Detail |
protected DataValueDescriptor value
Constructor Detail |
OrderableAggregator()
Method Detail |
public void setup(java.lang.String aggregateName)
ExecAggregator
public void merge(ExecAggregator addend) throws StandardException
ExecAggregator
An example of a merge would be: given two COUNT() aggregators, C1 and C2, a merge of C1 into C2 would set C1.count += C2.count. So, given a CountAggregator with a getCount() method that returns its counts, its merge method might look like this:
public void merge(ExecAggregator inputAggregator) throws StandardException { count += ((CountAccgregator)inputAggregator).getCount(); }
addend
- the other Aggregator
(input partial aggregate)
StandardException
- on errorExecAggregator.merge(org.apache.derby.iapi.sql.execute.ExecAggregator)
public java.lang.Object getResult()
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Why would we be called to write ourselves out if we are null? For scalar aggregates, we don't bother setting up the aggregator since we only need a single row. So for a scalar aggregate that needs to go to disk, the aggregator might be null.
writeExternal
in interface java.io.Externalizable
writeExternal
in class SystemAggregator
java.io.IOException
- on errorExternalizable.writeExternal(java.io.ObjectOutput)
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
readExternal
in interface java.io.Externalizable
readExternal
in class SystemAggregator
java.io.IOException
- on error
java.lang.ClassNotFoundException
- on errorExternalizable.readExternal(java.io.ObjectInput)
public boolean didEliminateNulls()
ExecAggregator
didEliminateNulls
in interface ExecAggregator
public void accumulate(DataValueDescriptor addend, java.lang.Object ga) throws StandardException
ExecAggregator
accumulate
in interface ExecAggregator
addend
- the DataValueDescriptor addend (current input to
the aggregation)ga
- a result set getter
StandardException
- on errorprotected abstract void accumulate(DataValueDescriptor addend) throws StandardException
StandardException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |