saffron
Class BuiltinAggregation.Count

java.lang.Object
  |
  +--saffron.BuiltinAggregation
        |
        +--saffron.BuiltinAggregation.Count
All Implemented Interfaces:
Aggregation
Enclosing class:
BuiltinAggregation

static class BuiltinAggregation.Count
extends BuiltinAggregation

Count is an aggregator which returns the number of rows which have gone into it. With one argument (or more), it returns the number of rows for which that argument (or all) is not null.


Nested Class Summary
 
Nested classes inherited from class saffron.BuiltinAggregation
BuiltinAggregation.Count, BuiltinAggregation.MinMax, BuiltinAggregation.Sum
 
Field Summary
(package private)  OJClass[] argTypes
           
(package private) static OJClass type
           
 
Constructor Summary
(package private) BuiltinAggregation.Count()
           
 
Method Summary
 boolean canMerge()
          Whether this aggregation can merge together two accumulators.
(package private)  String getName()
           
 OJClass[] getParameterTypes()
           
 OJClass getReturnType()
           
 OJClass[] getStartParameterTypes()
           
 void implementNext(Implementor implementor, Rel rel, Expression accumulator, int[] args)
          Generates (into the current statement list, gleaned by calling implementor's Implementor.getStatementList() method) the piece of code which gets called each time an extra row is seen.
 Expression implementResult(Expression accumulator)
          Generates the expression which gets called when a total is complete.
 Expression implementStart(Implementor implementor, Rel rel, int[] args)
          Generates the expression which gets called when a new total is created.
 
Methods inherited from class saffron.BuiltinAggregation
count, count, count, count, create, implementMerge, implementStartAndNext, lookup, max, max, max, min, min, min, sum, sum
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

argTypes

OJClass[] argTypes

type

static final OJClass type
Constructor Detail

BuiltinAggregation.Count

BuiltinAggregation.Count()
Method Detail

getName

String getName()
Specified by:
getName in class BuiltinAggregation

canMerge

public boolean canMerge()
Description copied from interface: Aggregation
Whether this aggregation can merge together two accumulators. count can (you just add the accumulators); avg and Nth cannot.

Specified by:
canMerge in interface Aggregation
Overrides:
canMerge in class BuiltinAggregation

getReturnType

public OJClass getReturnType()

getStartParameterTypes

public OJClass[] getStartParameterTypes()

getParameterTypes

public OJClass[] getParameterTypes()

implementStart

public Expression implementStart(Implementor implementor,
                                 Rel rel,
                                 int[] args)
Description copied from interface: Aggregation
Generates the expression which gets called when a new total is created. For sum(x), this looks like new saffron.runtime.Holder.int_Holder(0).


implementNext

public void implementNext(Implementor implementor,
                          Rel rel,
                          Expression accumulator,
                          int[] args)
Description copied from interface: Aggregation
Generates (into the current statement list, gleaned by calling implementor's Implementor.getStatementList() method) the piece of code which gets called each time an extra row is seen. For sum(x), this looks like ((saffron.runtime.Holder.int_Holder) accumulator).value += x.

Parameters:
implementor - a callback object which knows how to generate things
rel - the relational expression which is generating this code
accumulator - the expression which holds the total
args - the ordinals of the fields of the child row which are arguments to this aggregation

implementResult

public Expression implementResult(Expression accumulator)
Description copied from interface: Aggregation
Generates the expression which gets called when a total is complete. For sum(x), this looks like ((saffron.runtime.Holder.int_Holder) accumulator).value.


SourceForge.net_Logo