Class CountAggregator

    • Field Detail

      • value

        private long value
      • isCountStar

        private boolean isCountStar
    • Constructor Detail

      • CountAggregator

        public CountAggregator()
    • Method Detail

      • setup

        public void setup​(ClassFactory cf,
                          java.lang.String aggregateName,
                          DataTypeDescriptor returnType)
        Description copied from interface: ExecAggregator
        Set's up the aggregate for processing.
        Parameters:
        cf - Database-specific class factory.
        aggregateName - For builtin aggregates, this is a SQL aggregate name like MAX. For user-defined aggregates, this is the name of the user-written class which implements org.apache.derby.agg.Aggregator.
        returnType - The type returned by the getResult() method.
      • 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:
        • parallel aggregation
        • vector aggregation (GROUP BY)
        • distinct aggregates (e.g. MAX(DISTINCT Col))

        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
      • 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