net.sf.saffron.oj.rel
Class BuiltinAggregation.Sum
java.lang.Object
|
+--net.sf.saffron.oj.rel.BuiltinAggregation
|
+--net.sf.saffron.oj.rel.BuiltinAggregation.Sum
- All Implemented Interfaces:
- Aggregation
- Enclosing class:
- BuiltinAggregation
- static class BuiltinAggregation.Sum
- extends BuiltinAggregation
Sum
is an aggregator which returns the sum of the values
which go into it. It has precisely one argument of numeric type
(int
, long
, float
,
double
), and the result is the same type.
Methods inherited from class net.sf.saffron.oj.rel.BuiltinAggregation |
count, count, count, count, create, getParameterTypes, getReturnType, 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 |
type
private OJClass type
BuiltinAggregation.Sum
BuiltinAggregation.Sum(OJClass type)
getParameterTypes
public OJClass[] getParameterTypes()
- Specified by:
getParameterTypes
in class BuiltinAggregation
getReturnType
public OJClass getReturnType()
- Specified by:
getReturnType
in class BuiltinAggregation
getStartParameterTypes
public OJClass[] getStartParameterTypes()
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
implementNext
public void implementNext(RelImplementor implementor,
SaffronRel rel,
Expression accumulator,
int[] args)
- Description copied from interface:
Aggregation
- Generates (into the current statement list, gleaned by calling
implementor
's RelImplementor.getStatementList()
method) the piece of code
which gets called each time an extra row is seen. For
sum(x)
, this looks like
((net.sf.saffron.runtime.Holder.int_Holder) accumulator).value +=
x
.
- Parameters:
implementor
- a callback object which knows how to generate thingsrel
- the relational expression which is generating this codeaccumulator
- the expression which holds the totalargs
- 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
.
implementStart
public Expression implementStart(RelImplementor implementor,
SaffronRel 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)
.
getName
String getName()
- Specified by:
getName
in class BuiltinAggregation