org.apache.derby.impl.sql.execute
Class CountAggregator

java.lang.Object
  extended byorg.apache.derby.impl.sql.execute.SystemAggregator
      extended byorg.apache.derby.impl.sql.execute.CountAggregator
All Implemented Interfaces:
ExecAggregator, java.io.Externalizable, Formatable, java.io.Serializable, TypedFormat

public final class CountAggregator
extends SystemAggregator

Aggregator for COUNT()/COUNT(*).

Author:
jamie
See Also:
Serialized Form

Field Summary
private  boolean isCountStar
           
private  long value
           
 
Constructor Summary
CountAggregator()
           
 
Method Summary
protected  void accumulate(DataValueDescriptor addend)
           
 void accumulate(DataValueDescriptor addend, java.lang.Object ga)
          Accumulate for count().
 boolean didEliminateNulls()
          Return true if the aggregation eliminated at least one null from the input data set.
 DataValueDescriptor getResult()
          Return the result of the aggregation.
 int getTypeFormatId()
          Get the formatID which corresponds to this class.
 boolean isCountStar()
           
 void merge(ExecAggregator addend)
          Merges one aggregator into a another aggregator.
 ExecAggregator newAggregator()
          Return a new initialized copy of this aggregator, any state set by the setup() method of the original Aggregator must be copied into the new 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
 

Field Detail

value

private long value

isCountStar

private boolean isCountStar
Constructor Detail

CountAggregator

public CountAggregator()
Method Detail

setup

public void setup(java.lang.String aggregateName)
Description copied from interface: ExecAggregator
Set's up the aggregate for processing.


merge

public void merge(ExecAggregator addend)
           throws StandardException
Description copied from interface: ExecAggregator
Merges one aggregator into a another aggregator. Merges two partial aggregates results into a single result. Needed for:

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();
                } 

Parameters:
addend - the other Aggregator (input partial aggregate)
Throws:
StandardException - on error
See Also:
ExecAggregator.merge(org.apache.derby.iapi.sql.execute.ExecAggregator)

getResult

public DataValueDescriptor getResult()
Return the result of the aggregation. Just spit out the running count.

Returns:
the value as a Long

accumulate

public void accumulate(DataValueDescriptor addend,
                       java.lang.Object ga)
                throws StandardException
Accumulate for count(). Toss out all nulls in this kind of count. Increment the count for count(*). Count even the null values.

Specified by:
accumulate in interface ExecAggregator
Overrides:
accumulate in class SystemAggregator
Parameters:
addend - value to be added in
ga - the generic aggregator that is calling me
Throws:
StandardException
See Also:
ExecAggregator.accumulate(org.apache.derby.iapi.types.DataValueDescriptor, java.lang.Object)

accumulate

protected final void accumulate(DataValueDescriptor addend)
Specified by:
accumulate in class SystemAggregator

newAggregator

public ExecAggregator newAggregator()
Description copied from interface: ExecAggregator
Return a new initialized copy of this aggregator, any state set by the setup() method of the original Aggregator must be copied into the new aggregator.

Returns:
ExecAggregator the new aggregator

isCountStar

public boolean isCountStar()

writeExternal

public final void writeExternal(java.io.ObjectOutput out)
                         throws java.io.IOException
Although we are not expected to be persistent per se, we may be written out by the sorter temporarily. So we need to be able to write ourselves out and read ourselves back in.

Specified by:
writeExternal in interface java.io.Externalizable
Overrides:
writeExternal in class SystemAggregator
Throws:
java.io.IOException - thrown on error

readExternal

public final void readExternal(java.io.ObjectInput in)
                        throws java.io.IOException,
                               java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Overrides:
readExternal in class SystemAggregator
Throws:
java.io.IOException - io exception
java.lang.ClassNotFoundException - on error
See Also:
Externalizable.readExternal(java.io.ObjectInput)

getTypeFormatId

public int getTypeFormatId()
Get the formatID which corresponds to this class.

Returns:
the formatID of this class

didEliminateNulls

public boolean didEliminateNulls()
Description copied from interface: ExecAggregator
Return true if the aggregation eliminated at least one null from the input data set.

Specified by:
didEliminateNulls in interface ExecAggregator

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.