Class MaxMinAggregator
java.lang.Object
org.apache.derby.impl.sql.execute.SystemAggregator
org.apache.derby.impl.sql.execute.OrderableAggregator
org.apache.derby.impl.sql.execute.MaxMinAggregator
- All Implemented Interfaces:
Externalizable,Serializable,Formatable,TypedFormat,ExecAggregator
Aggregator for MAX()/MIN(). Defers most of its work
to OrderableAggregator.
- See Also:
-
Field Summary
FieldsFields inherited from class org.apache.derby.impl.sql.execute.OrderableAggregator
value -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaccumulate(DataValueDescriptor addend) AccumulateintGet the formatID which corresponds to this class.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.voidvoidsetup(ClassFactory cf, String aggregateName, DataTypeDescriptor returnType) Set's up the aggregate for processing.voidAlthough we are not expected to be persistent per se, we may be written out by the sorter temporarily.Methods inherited from class org.apache.derby.impl.sql.execute.OrderableAggregator
getResult, merge, toStringMethods inherited from class org.apache.derby.impl.sql.execute.SystemAggregator
accumulate, didEliminateNulls
-
Field Details
-
isMax
private boolean isMax
-
-
Constructor Details
-
MaxMinAggregator
public MaxMinAggregator()
-
-
Method Details
-
setup
Description copied from interface:ExecAggregatorSet's up the aggregate for processing.- Specified by:
setupin interfaceExecAggregator- Overrides:
setupin classOrderableAggregator- 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.
-
accumulate
Accumulate- Specified by:
accumulatein classSystemAggregator- Parameters:
addend- value to be added in- Throws:
StandardException- on error
-
newAggregator
Description copied from interface:ExecAggregatorReturn 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
-
writeExternal
Description copied from class:OrderableAggregatorAlthough 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. We rely on formatable to handle situations where value is null.Why would we be called to write ourselves out if we are null? For scalar aggregates, we don't bother setting up the aggregator since we only need a single row. So for a scalar aggregate that needs to go to disk, the aggregator might be null.
- Specified by:
writeExternalin interfaceExternalizable- Overrides:
writeExternalin classOrderableAggregator- Throws:
IOException- on error- See Also:
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Overrides:
readExternalin classOrderableAggregator- Throws:
IOException- on errorClassNotFoundException- on error- See Also:
-
getTypeFormatId
public int getTypeFormatId()Get the formatID which corresponds to this class.- Returns:
- the formatID of this class
-