net.sf.saffron.oj.rel
Class BuiltinAggregation.MinMax
java.lang.Object
|
+--net.sf.saffron.oj.rel.BuiltinAggregation
|
+--net.sf.saffron.oj.rel.BuiltinAggregation.MinMax
- All Implemented Interfaces:
- Aggregation
- Enclosing class:
- BuiltinAggregation
- static class BuiltinAggregation.MinMax
- extends BuiltinAggregation
MinMax implements the "min" and "max" aggregator
functions, returning the returns the smallest/largest of the values
which go into it. There are 3 forms:
-
sum(primitive type)
-
values are compared using <
-
sum(
Comparable)
-
values are compared using
Comparable.compareTo(java.lang.Object)
-
sum(
Comparator, Object)
-
the
Comparator.compare(java.lang.Object, java.lang.Object) method of the comparator is
used to compare pairs of objects. The comparator is a startup
argument, and must therefore be constant for the duration of the
aggregation.
| 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 |
MINMAX_INVALID
static final int MINMAX_INVALID
- See Also:
- Constant Field Values
MINMAX_PRIMITIVE
static final int MINMAX_PRIMITIVE
- See Also:
- Constant Field Values
MINMAX_COMPARABLE
static final int MINMAX_COMPARABLE
- See Also:
- Constant Field Values
MINMAX_COMPARATOR
static final int MINMAX_COMPARATOR
- See Also:
- Constant Field Values
argTypes
private OJClass[] argTypes
isMin
private boolean isMin
kind
private int kind
BuiltinAggregation.MinMax
BuiltinAggregation.MinMax(OJClass[] argTypes,
boolean isMin)
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).
getKind
static int getKind(OJClass[] argTypes)
getName
String getName()
- Specified by:
getName in class BuiltinAggregation