Class SumAvgAggregateDefinition

java.lang.Object
org.apache.derby.impl.sql.compile.SumAvgAggregateDefinition
All Implemented Interfaces:
AggregateDefinition

class SumAvgAggregateDefinition extends Object implements AggregateDefinition
Definition for the SUM()/AVG() aggregates.
  • Field Details

    • isSum

      private boolean isSum
  • Constructor Details

    • SumAvgAggregateDefinition

      public SumAvgAggregateDefinition()
      Niladic constructor. Does nothing. For ease Of use, only.
  • Method Details

    • getAggregator

      public final DataTypeDescriptor getAggregator(DataTypeDescriptor inputType, StringBuffer aggregatorClass)
      Determines the result datatype. Accept NumberDataValues only.

      Note: In the future you should be able to do a sum user data types. One option would be to run sum on anything that implements plus(). In which case avg() would need divide().

      Specified by:
      getAggregator in interface AggregateDefinition
      Parameters:
      inputType - the input type, either a user type or a java.lang object
      aggregatorClass - output parameter, filled in with the class name that implements com.ibm.db2j.aggregates.Aggregator
      Returns:
      the output Class (null if cannot operate on value expression of this type.
      See Also:
    • getAggregatorClassName

      private String getAggregatorClassName()
      Return the aggregator class.
      Returns:
      SumAggregator.CLASS_NAME/AvgAggregator.CLASS_NAME
    • getOperator

      protected String getOperator()
      Return the arithmetic operator corresponding to this operation.
      Returns:
      TypeCompiler.SUM_OP /TypeCompiler.AVG_OP
    • setSumOrAvg

      final void setSumOrAvg(boolean isSum)
      This is set by the parser.