Class FirstValueAccumulator

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.apache.iotdb.tsfile.utils.TsPrimitiveType firstValue  
      protected boolean hasCandidateResult  
      protected long minTime  
      protected org.apache.iotdb.tsfile.file.metadata.enums.TSDataType seriesDataType  
    • Constructor Summary

      Constructors 
      Constructor Description
      FirstValueAccumulator​(org.apache.iotdb.tsfile.file.metadata.enums.TSDataType seriesDataType)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected int addBinaryInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      protected int addBooleanInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      protected int addDoubleInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      protected int addFloatInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      int addInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      Column should be like: | Time | Value |
      void addIntermediate​(org.apache.iotdb.tsfile.read.common.block.column.Column[] partialResult)
      For aggregation function like COUNT, SUM, partialResult should be single; But for AVG, last_value, it should be double column with dictionary order.
      protected int addIntInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      protected int addLongInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)  
      void addStatistics​(org.apache.iotdb.tsfile.file.metadata.statistics.Statistics statistics)
      This method can only be used in seriesAggregateScanOperator, it will use different statistics based on the type of Accumulator.
      org.apache.iotdb.tsfile.file.metadata.enums.TSDataType getFinalType()  
      org.apache.iotdb.tsfile.file.metadata.enums.TSDataType[] getIntermediateType()  
      boolean hasFinalResult()
      This method can only be used in seriesAggregateScanOperator.
      void outputFinal​(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder columnBuilder)
      Final result is single column for any aggregation function.
      void outputIntermediate​(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder[] columnBuilders)
      For aggregation function like COUNT, SUM, partialResult should be single, so its output column is single too; But for AVG(COUNT and SUM), LAST_VALUE(LAST_VALUE and MAX_TIME), the output columns should be double in dictionary order.
      void reset()  
      void setFinal​(org.apache.iotdb.tsfile.read.common.block.column.Column finalResult)
      Attention: setFinal should be invoked only once, and addInput() and addIntermediate() are not allowed again.
      protected void updateBinaryFirstValue​(org.apache.iotdb.tsfile.utils.Binary value, long curTime)  
      protected void updateBooleanFirstValue​(boolean value, long curTime)  
      protected void updateDoubleFirstValue​(double value, long curTime)  
      protected void updateFloatFirstValue​(float value, long curTime)  
      protected void updateIntFirstValue​(int value, long curTime)  
      protected void updateLongFirstValue​(long value, long curTime)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • seriesDataType

        protected final org.apache.iotdb.tsfile.file.metadata.enums.TSDataType seriesDataType
      • hasCandidateResult

        protected boolean hasCandidateResult
      • firstValue

        protected org.apache.iotdb.tsfile.utils.TsPrimitiveType firstValue
      • minTime

        protected long minTime
    • Constructor Detail

      • FirstValueAccumulator

        public FirstValueAccumulator​(org.apache.iotdb.tsfile.file.metadata.enums.TSDataType seriesDataType)
    • Method Detail

      • addInput

        public int addInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                            org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
        Description copied from interface: Accumulator
        Column should be like: | Time | Value |

        Return the last read row index of current timeColumn

        Specified by:
        addInput in interface Accumulator
      • addIntermediate

        public void addIntermediate​(org.apache.iotdb.tsfile.read.common.block.column.Column[] partialResult)
        Description copied from interface: Accumulator
        For aggregation function like COUNT, SUM, partialResult should be single; But for AVG, last_value, it should be double column with dictionary order.
        Specified by:
        addIntermediate in interface Accumulator
      • addStatistics

        public void addStatistics​(org.apache.iotdb.tsfile.file.metadata.statistics.Statistics statistics)
        Description copied from interface: Accumulator
        This method can only be used in seriesAggregateScanOperator, it will use different statistics based on the type of Accumulator.
        Specified by:
        addStatistics in interface Accumulator
      • setFinal

        public void setFinal​(org.apache.iotdb.tsfile.read.common.block.column.Column finalResult)
        Description copied from interface: Accumulator
        Attention: setFinal should be invoked only once, and addInput() and addIntermediate() are not allowed again.
        Specified by:
        setFinal in interface Accumulator
      • outputIntermediate

        public void outputIntermediate​(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder[] columnBuilders)
        Description copied from interface: Accumulator
        For aggregation function like COUNT, SUM, partialResult should be single, so its output column is single too; But for AVG(COUNT and SUM), LAST_VALUE(LAST_VALUE and MAX_TIME), the output columns should be double in dictionary order.
        Specified by:
        outputIntermediate in interface Accumulator
      • outputFinal

        public void outputFinal​(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder columnBuilder)
        Description copied from interface: Accumulator
        Final result is single column for any aggregation function.
        Specified by:
        outputFinal in interface Accumulator
      • hasFinalResult

        public boolean hasFinalResult()
        Description copied from interface: Accumulator
        This method can only be used in seriesAggregateScanOperator. For first_value or last_value in decreasing order, we can get final result by the first record.
        Specified by:
        hasFinalResult in interface Accumulator
      • getIntermediateType

        public org.apache.iotdb.tsfile.file.metadata.enums.TSDataType[] getIntermediateType()
        Specified by:
        getIntermediateType in interface Accumulator
      • getFinalType

        public org.apache.iotdb.tsfile.file.metadata.enums.TSDataType getFinalType()
        Specified by:
        getFinalType in interface Accumulator
      • addIntInput

        protected int addIntInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                  org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateIntFirstValue

        protected void updateIntFirstValue​(int value,
                                           long curTime)
      • addLongInput

        protected int addLongInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                   org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateLongFirstValue

        protected void updateLongFirstValue​(long value,
                                            long curTime)
      • addFloatInput

        protected int addFloatInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                    org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateFloatFirstValue

        protected void updateFloatFirstValue​(float value,
                                             long curTime)
      • addDoubleInput

        protected int addDoubleInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                     org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateDoubleFirstValue

        protected void updateDoubleFirstValue​(double value,
                                              long curTime)
      • addBooleanInput

        protected int addBooleanInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                      org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateBooleanFirstValue

        protected void updateBooleanFirstValue​(boolean value,
                                               long curTime)
      • addBinaryInput

        protected int addBinaryInput​(org.apache.iotdb.tsfile.read.common.block.column.Column[] column,
                                     org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
      • updateBinaryFirstValue

        protected void updateBinaryFirstValue​(org.apache.iotdb.tsfile.utils.Binary value,
                                              long curTime)