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:
java.io.Externalizable
,java.io.Serializable
,Formatable
,TypedFormat
,ExecAggregator
public final class MaxMinAggregator extends OrderableAggregator
Aggregator for MAX()/MIN(). Defers most of its work to OrderableAggregator.- See Also:
OrderableAggregator
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
isMax
-
Fields inherited from class org.apache.derby.impl.sql.execute.OrderableAggregator
value
-
-
Constructor Summary
Constructors Constructor Description MaxMinAggregator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
accumulate(DataValueDescriptor addend)
Accumulateint
getTypeFormatId()
Get the formatID which corresponds to this class.ExecAggregator
newAggregator()
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.void
readExternal(java.io.ObjectInput in)
void
setup(ClassFactory cf, java.lang.String aggregateName, DataTypeDescriptor returnType)
Set's up the aggregate for processing.void
writeExternal(java.io.ObjectOutput out)
Although 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, toString
-
Methods inherited from class org.apache.derby.impl.sql.execute.SystemAggregator
accumulate, didEliminateNulls
-
-
-
-
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.- Specified by:
setup
in interfaceExecAggregator
- Overrides:
setup
in 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
protected void accumulate(DataValueDescriptor addend) throws StandardException
Accumulate- Specified by:
accumulate
in classSystemAggregator
- Parameters:
addend
- value to be added in- Throws:
StandardException
- on error
-
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
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Description copied from class:OrderableAggregator
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. 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:
writeExternal
in interfacejava.io.Externalizable
- Overrides:
writeExternal
in classOrderableAggregator
- Throws:
java.io.IOException
- on error- See Also:
Externalizable.writeExternal(java.io.ObjectOutput)
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Overrides:
readExternal
in classOrderableAggregator
- Throws:
java.io.IOException
- on errorjava.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
-
-