You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2023/03/17 00:37:29 UTC

[pinot] branch master updated: [Clean up] Remove getColumnName() from AggregationFunction interface (#10431)

This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new dca5d383c6 [Clean up] Remove getColumnName() from AggregationFunction interface (#10431)
dca5d383c6 is described below

commit dca5d383c672fc84f675328d494a4a0efffd6a59
Author: Xiaotian (Jackie) Jiang <17...@users.noreply.github.com>
AuthorDate: Thu Mar 16 17:37:21 2023 -0700

    [Clean up] Remove getColumnName() from AggregationFunction interface (#10431)
---
 .../blocks/results/AggregationResultsBlock.java    | 17 +++--
 .../operator/blocks/results/ResultsBlockUtils.java | 14 +---
 .../aggregation/function/AggregationFunction.java  |  5 --
 .../BaseSingleInputAggregationFunction.java        |  5 --
 .../function/CountAggregationFunction.java         |  6 --
 .../function/CountMVAggregationFunction.java       |  5 --
 .../function/CovarianceAggregationFunction.java    |  5 --
 .../function/DistinctAggregationFunction.java      | 14 +---
 ...irstDoubleValueWithTimeAggregationFunction.java | 24 ++----
 ...FirstFloatValueWithTimeAggregationFunction.java | 25 ++----
 .../FirstIntValueWithTimeAggregationFunction.java  | 28 ++-----
 .../FirstLongValueWithTimeAggregationFunction.java | 24 ++----
 ...irstStringValueWithTimeAggregationFunction.java | 20 +----
 ...LastDoubleValueWithTimeAggregationFunction.java | 24 ++----
 .../LastFloatValueWithTimeAggregationFunction.java | 25 ++----
 .../LastIntValueWithTimeAggregationFunction.java   | 28 ++-----
 .../LastLongValueWithTimeAggregationFunction.java  | 24 ++----
 ...LastStringValueWithTimeAggregationFunction.java | 20 +----
 .../function/PercentileAggregationFunction.java    |  6 --
 .../function/PercentileEstAggregationFunction.java |  6 --
 .../PercentileEstMVAggregationFunction.java        |  6 --
 .../function/PercentileMVAggregationFunction.java  |  6 --
 .../PercentileRawEstAggregationFunction.java       |  9 ---
 .../PercentileRawTDigestAggregationFunction.java   |  9 ---
 .../PercentileSmartTDigestAggregationFunction.java |  5 --
 .../PercentileTDigestAggregationFunction.java      |  6 --
 .../PercentileTDigestMVAggregationFunction.java    |  6 --
 .../query/reduce/AggregationDataTableReducer.java  | 38 +++++-----
 .../blocks/results/ResultsBlockUtilsTest.java      | 19 ++---
 .../function/AggregationFunctionFactoryTest.java   | 88 ++++------------------
 30 files changed, 113 insertions(+), 404 deletions(-)

diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/AggregationResultsBlock.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/AggregationResultsBlock.java
index b2bb5b7308..b10ebdd3b9 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/AggregationResultsBlock.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/AggregationResultsBlock.java
@@ -23,12 +23,15 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.pinot.common.datatable.DataTable;
+import org.apache.pinot.common.request.context.FilterContext;
 import org.apache.pinot.common.utils.DataSchema;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
 import org.apache.pinot.core.common.datatable.DataTableBuilder;
 import org.apache.pinot.core.common.datatable.DataTableBuilderFactory;
 import org.apache.pinot.core.query.aggregation.function.AggregationFunction;
+import org.apache.pinot.core.query.aggregation.function.AggregationFunctionUtils;
 import org.apache.pinot.core.query.request.context.QueryContext;
 import org.apache.pinot.spi.utils.ByteArray;
 import org.roaringbitmap.RoaringBitmap;
@@ -62,13 +65,17 @@ public class AggregationResultsBlock extends BaseResultsBlock {
 
   @Override
   public DataSchema getDataSchema(QueryContext queryContext) {
-    boolean returnFinalResult = queryContext.isServerReturnFinalResult();
-    int numColumns = _aggregationFunctions.length;
+    List<Pair<AggregationFunction, FilterContext>> filteredAggregationFunctions =
+        queryContext.getFilteredAggregationFunctions();
+    assert filteredAggregationFunctions != null;
+    int numColumns = filteredAggregationFunctions.size();
     String[] columnNames = new String[numColumns];
     ColumnDataType[] columnDataTypes = new ColumnDataType[numColumns];
+    boolean returnFinalResult = queryContext.isServerReturnFinalResult();
     for (int i = 0; i < numColumns; i++) {
-      AggregationFunction aggregationFunction = _aggregationFunctions[i];
-      columnNames[i] = aggregationFunction.getColumnName();
+      Pair<AggregationFunction, FilterContext> pair = filteredAggregationFunctions.get(i);
+      AggregationFunction aggregationFunction = pair.getLeft();
+      columnNames[i] = AggregationFunctionUtils.getResultColumnName(aggregationFunction, pair.getRight());
       columnDataTypes[i] = returnFinalResult ? aggregationFunction.getFinalResultColumnType()
           : aggregationFunction.getIntermediateResultColumnType();
     }
@@ -83,12 +90,12 @@ public class AggregationResultsBlock extends BaseResultsBlock {
   @Override
   public DataTable getDataTable(QueryContext queryContext)
       throws IOException {
-    boolean returnFinalResult = queryContext.isServerReturnFinalResult();
     DataSchema dataSchema = getDataSchema(queryContext);
     assert dataSchema != null;
     ColumnDataType[] columnDataTypes = dataSchema.getColumnDataTypes();
     int numColumns = columnDataTypes.length;
     DataTableBuilder dataTableBuilder = DataTableBuilderFactory.getDataTableBuilder(dataSchema);
+    boolean returnFinalResult = queryContext.isServerReturnFinalResult();
     if (queryContext.isNullHandlingEnabled()) {
       RoaringBitmap[] nullBitmaps = new RoaringBitmap[numColumns];
       for (int i = 0; i < numColumns; i++) {
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtils.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtils.java
index 6fe8346a8b..f760920923 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtils.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtils.java
@@ -71,8 +71,6 @@ public class ResultsBlockUtils {
 
   private static AggregationResultsBlock buildEmptyAggregationQueryResults(QueryContext queryContext) {
     AggregationFunction[] aggregationFunctions = queryContext.getAggregationFunctions();
-    List<Pair<AggregationFunction, FilterContext>> filteredAggregationFunctions =
-        queryContext.getFilteredAggregationFunctions();
     assert aggregationFunctions != null;
     int numAggregations = aggregationFunctions.length;
     List<Object> results = new ArrayList<>(numAggregations);
@@ -85,9 +83,8 @@ public class ResultsBlockUtils {
   private static GroupByResultsBlock buildEmptyGroupByQueryResults(QueryContext queryContext) {
     List<Pair<AggregationFunction, FilterContext>> filteredAggregationFunctions =
         queryContext.getFilteredAggregationFunctions();
-
     List<ExpressionContext> groupByExpressions = queryContext.getGroupByExpressions();
-    assert groupByExpressions != null;
+    assert filteredAggregationFunctions != null && groupByExpressions != null;
     int numColumns = groupByExpressions.size() + filteredAggregationFunctions.size();
     String[] columnNames = new String[numColumns];
     ColumnDataType[] columnDataTypes = new ColumnDataType[numColumns];
@@ -98,12 +95,9 @@ public class ResultsBlockUtils {
       columnDataTypes[index] = ColumnDataType.STRING;
       index++;
     }
-    for (Pair<AggregationFunction, FilterContext> aggFilterPair : filteredAggregationFunctions) {
-      // NOTE: Use AggregationFunction.getResultColumnName() for SQL format response
-      AggregationFunction aggregationFunction = aggFilterPair.getLeft();
-      String columnName =
-          AggregationFunctionUtils.getResultColumnName(aggregationFunction, aggFilterPair.getRight());
-      columnNames[index] = columnName;
+    for (Pair<AggregationFunction, FilterContext> pair : filteredAggregationFunctions) {
+      AggregationFunction aggregationFunction = pair.getLeft();
+      columnNames[index] = AggregationFunctionUtils.getResultColumnName(aggregationFunction, pair.getRight());
       columnDataTypes[index] = aggregationFunction.getIntermediateResultColumnType();
       index++;
     }
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/AggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/AggregationFunction.java
index 220feec5d1..8176308713 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/AggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/AggregationFunction.java
@@ -46,11 +46,6 @@ public interface AggregationFunction<IntermediateResult, FinalResult extends Com
    */
   AggregationFunctionType getType();
 
-  /**
-   * Returns the result column name for the given aggregation column, e.g. 'SUM(foo)' -> 'sum_foo'.
-   */
-  String getColumnName();
-
   /**
    * Returns the column name to be used in the data schema of results.
    * e.g. 'MINMAXRANGEMV( foo)' -> 'minmaxrangemv(foo)', 'PERCENTILE75(bar)' -> 'percentile75(bar)'
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/BaseSingleInputAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/BaseSingleInputAggregationFunction.java
index 54986c9a74..84ff537a9c 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/BaseSingleInputAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/BaseSingleInputAggregationFunction.java
@@ -38,11 +38,6 @@ public abstract class BaseSingleInputAggregationFunction<I, F extends Comparable
     _expression = expression;
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return getType().getName().toLowerCase() + "(" + _expression + ")";
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountAggregationFunction.java
index 06d8048b87..e9861193f4 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountAggregationFunction.java
@@ -34,7 +34,6 @@ import org.roaringbitmap.RoaringBitmap;
 
 
 public class CountAggregationFunction extends BaseSingleInputAggregationFunction<Long, Long> {
-  private static final String COUNT_STAR_COLUMN_NAME = "count_star";
   private static final String COUNT_STAR_RESULT_COLUMN_NAME = "count(*)";
   private static final double DEFAULT_INITIAL_VALUE = 0.0;
   // Special expression used by star-tree to pass in BlockValSet
@@ -62,11 +61,6 @@ public class CountAggregationFunction extends BaseSingleInputAggregationFunction
     return AggregationFunctionType.COUNT;
   }
 
-  @Override
-  public String getColumnName() {
-    return _nullHandlingEnabled ? super.getColumnName() : COUNT_STAR_COLUMN_NAME;
-  }
-
   @Override
   public String getResultColumnName() {
     return _nullHandlingEnabled ? super.getResultColumnName() : COUNT_STAR_RESULT_COLUMN_NAME;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountMVAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountMVAggregationFunction.java
index 061111daaf..cb7ab591fb 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountMVAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CountMVAggregationFunction.java
@@ -45,11 +45,6 @@ public class CountMVAggregationFunction extends CountAggregationFunction {
     return AggregationFunctionType.COUNTMV;
   }
 
-  @Override
-  public String getColumnName() {
-    return AggregationFunctionType.COUNTMV.getName() + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return AggregationFunctionType.COUNTMV.getName().toLowerCase() + "(" + _expression + ")";
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CovarianceAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CovarianceAggregationFunction.java
index 1676835bae..7f07d0cfb8 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CovarianceAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/CovarianceAggregationFunction.java
@@ -68,11 +68,6 @@ public class CovarianceAggregationFunction implements AggregationFunction<Covari
     return AggregationFunctionType.COVARPOP;
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression1 + "_" + _expression2;
-  }
-
   @Override
   public String getResultColumnName() {
     return getType().getName().toLowerCase() + "(" + _expression1 + "," + _expression2 + ")";
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunction.java
index 6f0703d72e..6035ca5a03 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunction.java
@@ -21,7 +21,6 @@ package org.apache.pinot.core.query.aggregation.function;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Nullable;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.request.context.OrderByExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -80,23 +79,18 @@ public class DistinctAggregationFunction implements AggregationFunction<Object,
   }
 
   @Override
-  public String getColumnName() {
-    return AggregationFunctionType.DISTINCT.getName() + "_" + StringUtils.join(_columns, ':');
+  public List<ExpressionContext> getInputExpressions() {
+    return _expressions;
   }
 
   @Override
   public String getResultColumnName() {
-    return AggregationFunctionType.DISTINCT.getName().toLowerCase() + "(" + StringUtils.join(_columns, ':') + ")";
-  }
-
-  @Override
-  public List<ExpressionContext> getInputExpressions() {
-    return _expressions;
+    throw new UnsupportedOperationException("Operation not supported for DISTINCT aggregation function");
   }
 
   @Override
   public ColumnDataType getIntermediateResultColumnType() {
-    return ColumnDataType.OBJECT;
+    throw new UnsupportedOperationException("Operation not supported for DISTINCT aggregation function");
   }
 
   @Override
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstDoubleValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstDoubleValueWithTimeAggregationFunction.java
index 56aff397df..270a86d671 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstDoubleValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstDoubleValueWithTimeAggregationFunction.java
@@ -38,15 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class FirstDoubleValueWithTimeAggregationFunction extends FirstWithTimeAggregationFunction<Double> {
+  private final static ValueLongPair<Double> DEFAULT_VALUE_TIME_PAIR = new DoubleLongPair(Double.NaN, Long.MAX_VALUE);
 
-  private final static ValueLongPair<Double> DEFAULT_VALUE_TIME_PAIR
-      = new DoubleLongPair(Double.NaN, Long.MAX_VALUE);
-
-  public FirstDoubleValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public FirstDoubleValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.DOUBLE_LONG_PAIR_SER_DE);
   }
 
@@ -81,8 +76,7 @@ public class FirstDoubleValueWithTimeAggregationFunction extends FirstWithTimeAg
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     double[] doubleValues = blockValSet.getDoubleValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -93,11 +87,8 @@ public class FirstDoubleValueWithTimeAggregationFunction extends FirstWithTimeAg
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     double[] doubleValues = blockValSet.getDoubleValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -114,11 +105,6 @@ public class FirstDoubleValueWithTimeAggregationFunction extends FirstWithTimeAg
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'DOUBLE')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_DOUBLE";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.DOUBLE;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstFloatValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstFloatValueWithTimeAggregationFunction.java
index 3801ff17a3..e4c4da2400 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstFloatValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstFloatValueWithTimeAggregationFunction.java
@@ -38,14 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class FirstFloatValueWithTimeAggregationFunction extends FirstWithTimeAggregationFunction<Float> {
-
   private final static ValueLongPair<Float> DEFAULT_VALUE_TIME_PAIR = new FloatLongPair(Float.NaN, Long.MAX_VALUE);
 
-  public FirstFloatValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public FirstFloatValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.FLOAT_LONG_PAIR_SER_DE);
   }
 
@@ -79,11 +75,8 @@ public class FirstFloatValueWithTimeAggregationFunction extends FirstWithTimeAgg
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataSv(int length,
-      int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     float[] floatValues = blockValSet.getFloatValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -94,11 +87,8 @@ public class FirstFloatValueWithTimeAggregationFunction extends FirstWithTimeAgg
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     float[] floatValues = blockValSet.getFloatValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -115,11 +105,6 @@ public class FirstFloatValueWithTimeAggregationFunction extends FirstWithTimeAgg
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'FLOAT')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_FLOAT";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.FLOAT;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstIntValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstIntValueWithTimeAggregationFunction.java
index be151b9994..8623f0bdc5 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstIntValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstIntValueWithTimeAggregationFunction.java
@@ -39,16 +39,13 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class FirstIntValueWithTimeAggregationFunction extends FirstWithTimeAggregationFunction<Integer> {
+  private final static ValueLongPair<Integer> DEFAULT_VALUE_TIME_PAIR =
+      new IntLongPair(Integer.MIN_VALUE, Long.MAX_VALUE);
 
-  private final static ValueLongPair<Integer> DEFAULT_VALUE_TIME_PAIR
-      = new IntLongPair(Integer.MIN_VALUE, Long.MAX_VALUE);
   private final boolean _isBoolean;
 
-  public FirstIntValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol,
+  public FirstIntValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol,
       boolean isBoolean) {
     super(dataCol, timeCol, ObjectSerDeUtils.INT_LONG_PAIR_SER_DE);
     _isBoolean = isBoolean;
@@ -85,8 +82,7 @@ public class FirstIntValueWithTimeAggregationFunction extends FirstWithTimeAggre
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     int[] intValues = blockValSet.getIntValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -97,11 +93,8 @@ public class FirstIntValueWithTimeAggregationFunction extends FirstWithTimeAggre
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     int[] intValues = blockValSet.getIntValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -122,15 +115,6 @@ public class FirstIntValueWithTimeAggregationFunction extends FirstWithTimeAggre
     }
   }
 
-  @Override
-  public String getColumnName() {
-    if (_isBoolean) {
-      return getType().getName() + "_" + _expression + "_" + _timeCol + "_BOOLEAN";
-    } else {
-      return getType().getName() + "_" + _expression + "_" + _timeCol + "_INT";
-    }
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     if (_isBoolean) {
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstLongValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstLongValueWithTimeAggregationFunction.java
index 960cda8820..0f5afeaa97 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstLongValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstLongValueWithTimeAggregationFunction.java
@@ -38,15 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class FirstLongValueWithTimeAggregationFunction extends FirstWithTimeAggregationFunction<Long> {
+  private final static ValueLongPair<Long> DEFAULT_VALUE_TIME_PAIR = new LongLongPair(Long.MIN_VALUE, Long.MAX_VALUE);
 
-  private final static ValueLongPair<Long> DEFAULT_VALUE_TIME_PAIR
-      = new LongLongPair(Long.MIN_VALUE, Long.MAX_VALUE);
-
-  public FirstLongValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public FirstLongValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.LONG_LONG_PAIR_SER_DE);
   }
 
@@ -81,8 +76,7 @@ public class FirstLongValueWithTimeAggregationFunction extends FirstWithTimeAggr
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     long[] longValues = blockValSet.getLongValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -93,11 +87,8 @@ public class FirstLongValueWithTimeAggregationFunction extends FirstWithTimeAggr
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     long[] longValues = blockValSet.getLongValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -114,11 +105,6 @@ public class FirstLongValueWithTimeAggregationFunction extends FirstWithTimeAggr
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'LONG')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_LONG";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.LONG;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstStringValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstStringValueWithTimeAggregationFunction.java
index b0ace7487e..c30f4bfacb 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstStringValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/FirstStringValueWithTimeAggregationFunction.java
@@ -38,13 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class FirstStringValueWithTimeAggregationFunction extends FirstWithTimeAggregationFunction<String> {
   private final static ValueLongPair<String> DEFAULT_VALUE_TIME_PAIR = new StringLongPair("", Long.MAX_VALUE);
 
-  public FirstStringValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public FirstStringValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.STRING_LONG_PAIR_SER_DE);
   }
 
@@ -79,8 +76,7 @@ public class FirstStringValueWithTimeAggregationFunction extends FirstWithTimeAg
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     String[] stringValues = blockValSet.getStringValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -91,11 +87,8 @@ public class FirstStringValueWithTimeAggregationFunction extends FirstWithTimeAg
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     String[] stringValues = blockValSet.getStringValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -112,11 +105,6 @@ public class FirstStringValueWithTimeAggregationFunction extends FirstWithTimeAg
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'STRING')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_STRING";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.STRING;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastDoubleValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastDoubleValueWithTimeAggregationFunction.java
index 796a0cb02a..93aec2b0c1 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastDoubleValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastDoubleValueWithTimeAggregationFunction.java
@@ -38,15 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class LastDoubleValueWithTimeAggregationFunction extends LastWithTimeAggregationFunction<Double> {
+  private final static ValueLongPair<Double> DEFAULT_VALUE_TIME_PAIR = new DoubleLongPair(Double.NaN, Long.MIN_VALUE);
 
-  private final static ValueLongPair<Double> DEFAULT_VALUE_TIME_PAIR
-      = new DoubleLongPair(Double.NaN, Long.MIN_VALUE);
-
-  public LastDoubleValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public LastDoubleValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.DOUBLE_LONG_PAIR_SER_DE);
   }
 
@@ -81,8 +76,7 @@ public class LastDoubleValueWithTimeAggregationFunction extends LastWithTimeAggr
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     double[] doubleValues = blockValSet.getDoubleValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -93,11 +87,8 @@ public class LastDoubleValueWithTimeAggregationFunction extends LastWithTimeAggr
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     double[] doubleValues = blockValSet.getDoubleValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -114,11 +105,6 @@ public class LastDoubleValueWithTimeAggregationFunction extends LastWithTimeAggr
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'DOUBLE')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_DOUBLE";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.DOUBLE;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastFloatValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastFloatValueWithTimeAggregationFunction.java
index 6061a839bb..50635874c9 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastFloatValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastFloatValueWithTimeAggregationFunction.java
@@ -38,14 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class LastFloatValueWithTimeAggregationFunction extends LastWithTimeAggregationFunction<Float> {
-
   private final static ValueLongPair<Float> DEFAULT_VALUE_TIME_PAIR = new FloatLongPair(Float.NaN, Long.MIN_VALUE);
 
-  public LastFloatValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public LastFloatValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.FLOAT_LONG_PAIR_SER_DE);
   }
 
@@ -79,11 +75,8 @@ public class LastFloatValueWithTimeAggregationFunction extends LastWithTimeAggre
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataSv(int length,
-      int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     float[] floatValues = blockValSet.getFloatValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -94,11 +87,8 @@ public class LastFloatValueWithTimeAggregationFunction extends LastWithTimeAggre
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     float[] floatValues = blockValSet.getFloatValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -115,11 +105,6 @@ public class LastFloatValueWithTimeAggregationFunction extends LastWithTimeAggre
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'FLOAT')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_FLOAT";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.FLOAT;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastIntValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastIntValueWithTimeAggregationFunction.java
index ff9fdee5e2..87d33ce0df 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastIntValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastIntValueWithTimeAggregationFunction.java
@@ -39,16 +39,13 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class LastIntValueWithTimeAggregationFunction extends LastWithTimeAggregationFunction<Integer> {
+  private final static ValueLongPair<Integer> DEFAULT_VALUE_TIME_PAIR =
+      new IntLongPair(Integer.MIN_VALUE, Long.MIN_VALUE);
 
-  private final static ValueLongPair<Integer> DEFAULT_VALUE_TIME_PAIR
-      = new IntLongPair(Integer.MIN_VALUE, Long.MIN_VALUE);
   private final boolean _isBoolean;
 
-  public LastIntValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol,
+  public LastIntValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol,
       boolean isBoolean) {
     super(dataCol, timeCol, ObjectSerDeUtils.INT_LONG_PAIR_SER_DE);
     _isBoolean = isBoolean;
@@ -85,8 +82,7 @@ public class LastIntValueWithTimeAggregationFunction extends LastWithTimeAggrega
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     int[] intValues = blockValSet.getIntValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -97,11 +93,8 @@ public class LastIntValueWithTimeAggregationFunction extends LastWithTimeAggrega
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     int[] intValues = blockValSet.getIntValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -122,15 +115,6 @@ public class LastIntValueWithTimeAggregationFunction extends LastWithTimeAggrega
     }
   }
 
-  @Override
-  public String getColumnName() {
-    if (_isBoolean) {
-      return getType().getName() + "_" + _expression + "_" + _timeCol + "_BOOLEAN";
-    } else {
-      return getType().getName() + "_" + _expression + "_" + _timeCol + "_INT";
-    }
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     if (_isBoolean) {
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastLongValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastLongValueWithTimeAggregationFunction.java
index fa3c15fb3a..248487d635 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastLongValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastLongValueWithTimeAggregationFunction.java
@@ -38,15 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class LastLongValueWithTimeAggregationFunction extends LastWithTimeAggregationFunction<Long> {
+  private final static ValueLongPair<Long> DEFAULT_VALUE_TIME_PAIR = new LongLongPair(Long.MIN_VALUE, Long.MIN_VALUE);
 
-  private final static ValueLongPair<Long> DEFAULT_VALUE_TIME_PAIR
-      = new LongLongPair(Long.MIN_VALUE, Long.MIN_VALUE);
-
-  public LastLongValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public LastLongValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.LONG_LONG_PAIR_SER_DE);
   }
 
@@ -81,8 +76,7 @@ public class LastLongValueWithTimeAggregationFunction extends LastWithTimeAggreg
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     long[] longValues = blockValSet.getLongValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -93,11 +87,8 @@ public class LastLongValueWithTimeAggregationFunction extends LastWithTimeAggreg
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     long[] longValues = blockValSet.getLongValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -114,11 +105,6 @@ public class LastLongValueWithTimeAggregationFunction extends LastWithTimeAggreg
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'LONG')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_LONG";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.LONG;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastStringValueWithTimeAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastStringValueWithTimeAggregationFunction.java
index cb3caa886b..0f10e9399d 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastStringValueWithTimeAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/LastStringValueWithTimeAggregationFunction.java
@@ -38,13 +38,10 @@ import org.apache.pinot.segment.local.customobject.ValueLongPair;
  *   Numeric column</li>
  * </ul>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class LastStringValueWithTimeAggregationFunction extends LastWithTimeAggregationFunction<String> {
   private final static ValueLongPair<String> DEFAULT_VALUE_TIME_PAIR = new StringLongPair("", Long.MIN_VALUE);
 
-  public LastStringValueWithTimeAggregationFunction(
-      ExpressionContext dataCol,
-      ExpressionContext timeCol) {
+  public LastStringValueWithTimeAggregationFunction(ExpressionContext dataCol, ExpressionContext timeCol) {
     super(dataCol, timeCol, ObjectSerDeUtils.STRING_LONG_PAIR_SER_DE);
   }
 
@@ -79,8 +76,7 @@ public class LastStringValueWithTimeAggregationFunction extends LastWithTimeAggr
 
   @Override
   public void aggregateGroupResultWithRawDataSv(int length, int[] groupKeyArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet, BlockValSet timeValSet) {
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     String[] stringValues = blockValSet.getStringValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -91,11 +87,8 @@ public class LastStringValueWithTimeAggregationFunction extends LastWithTimeAggr
   }
 
   @Override
-  public void aggregateGroupResultWithRawDataMv(int length,
-      int[][] groupKeysArray,
-      GroupByResultHolder groupByResultHolder,
-      BlockValSet blockValSet,
-      BlockValSet timeValSet) {
+  public void aggregateGroupResultWithRawDataMv(int length, int[][] groupKeysArray,
+      GroupByResultHolder groupByResultHolder, BlockValSet blockValSet, BlockValSet timeValSet) {
     String[] stringValues = blockValSet.getStringValuesSV();
     long[] timeValues = timeValSet.getLongValuesSV();
     for (int i = 0; i < length; i++) {
@@ -112,11 +105,6 @@ public class LastStringValueWithTimeAggregationFunction extends LastWithTimeAggr
     return getType().getName().toLowerCase() + "(" + _expression + "," + _timeCol + ",'STRING')";
   }
 
-  @Override
-  public String getColumnName() {
-    return getType().getName() + "_" + _expression + "_" + _timeCol + "_STRING";
-  }
-
   @Override
   public ColumnDataType getFinalResultColumnType() {
     return ColumnDataType.STRING;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileAggregationFunction.java
index 8bfca2eefe..5d227caead 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileAggregationFunction.java
@@ -56,12 +56,6 @@ public class PercentileAggregationFunction extends BaseSingleInputAggregationFun
     return AggregationFunctionType.PERCENTILE;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILE.getName() + (int) _percentile + "_" + _expression
-        : AggregationFunctionType.PERCENTILE.getName() + _percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILE.getName().toLowerCase() + (int) _percentile + "("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstAggregationFunction.java
index ba815c47b8..d055e46505 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstAggregationFunction.java
@@ -57,12 +57,6 @@ public class PercentileEstAggregationFunction extends BaseSingleInputAggregation
     return AggregationFunctionType.PERCENTILEEST;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILEEST.getName() + (int) _percentile + "_" + _expression
-        : AggregationFunctionType.PERCENTILEEST.getName() + _percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILEEST.getName().toLowerCase() + (int) _percentile + "("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstMVAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstMVAggregationFunction.java
index de206a94e8..c1001f25c7 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstMVAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileEstMVAggregationFunction.java
@@ -42,12 +42,6 @@ public class PercentileEstMVAggregationFunction extends PercentileEstAggregation
     return AggregationFunctionType.PERCENTILEESTMV;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILEEST.getName() + (int) _percentile + "MV_" + _expression
-        : AggregationFunctionType.PERCENTILEEST.getName() + _percentile + "MV_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILEEST.getName().toLowerCase() + (int) _percentile + "mv("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileMVAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileMVAggregationFunction.java
index 33d1ff945a..794a9896a7 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileMVAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileMVAggregationFunction.java
@@ -42,12 +42,6 @@ public class PercentileMVAggregationFunction extends PercentileAggregationFuncti
     return AggregationFunctionType.PERCENTILEMV;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILE.getName() + (int) _percentile + "MV_" + _expression
-        : AggregationFunctionType.PERCENTILE.getName() + _percentile + "MV_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILE.getName().toLowerCase() + (int) _percentile + "mv("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawEstAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawEstAggregationFunction.java
index 1922d74c51..063359ec96 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawEstAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawEstAggregationFunction.java
@@ -56,15 +56,6 @@ public class PercentileRawEstAggregationFunction
     return AggregationFunctionType.PERCENTILERAWEST;
   }
 
-  @Override
-  public String getColumnName() {
-    final double percentile = _percentileEstAggregationFunction._percentile;
-    final int version = _percentileEstAggregationFunction._version;
-    final String type = getType().getName();
-
-    return version == 0 ? type + (int) percentile + "_" + _expression : type + percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     final double percentile = _percentileEstAggregationFunction._percentile;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawTDigestAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawTDigestAggregationFunction.java
index 0efbef2b47..bcd6a5857f 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawTDigestAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileRawTDigestAggregationFunction.java
@@ -56,15 +56,6 @@ public class PercentileRawTDigestAggregationFunction
     return AggregationFunctionType.PERCENTILERAWTDIGEST;
   }
 
-  @Override
-  public String getColumnName() {
-    final double percentile = _percentileTDigestAggregationFunction._percentile;
-    final int version = _percentileTDigestAggregationFunction._version;
-    final String type = getType().getName();
-
-    return version == 0 ? type + (int) percentile + "_" + _expression : type + percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     final double percentile = _percentileTDigestAggregationFunction._percentile;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileSmartTDigestAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileSmartTDigestAggregationFunction.java
index 2697690a60..a2e42442e6 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileSmartTDigestAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileSmartTDigestAggregationFunction.java
@@ -93,11 +93,6 @@ public class PercentileSmartTDigestAggregationFunction extends BaseSingleInputAg
     return AggregationFunctionType.PERCENTILESMARTTDIGEST;
   }
 
-  @Override
-  public String getColumnName() {
-    return AggregationFunctionType.PERCENTILESMARTTDIGEST.getName() + _percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return AggregationFunctionType.PERCENTILESMARTTDIGEST.getName().toLowerCase() + "(" + _expression + ", "
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestAggregationFunction.java
index 9ba5101339..91881967b9 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestAggregationFunction.java
@@ -60,12 +60,6 @@ public class PercentileTDigestAggregationFunction extends BaseSingleInputAggrega
     return AggregationFunctionType.PERCENTILETDIGEST;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILETDIGEST.getName() + (int) _percentile + "_" + _expression
-        : AggregationFunctionType.PERCENTILETDIGEST.getName() + _percentile + "_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILETDIGEST.getName().toLowerCase() + (int) _percentile + "("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestMVAggregationFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestMVAggregationFunction.java
index 122748a2e5..4e50103730 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestMVAggregationFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/PercentileTDigestMVAggregationFunction.java
@@ -42,12 +42,6 @@ public class PercentileTDigestMVAggregationFunction extends PercentileTDigestAgg
     return AggregationFunctionType.PERCENTILETDIGESTMV;
   }
 
-  @Override
-  public String getColumnName() {
-    return _version == 0 ? AggregationFunctionType.PERCENTILETDIGEST.getName() + (int) _percentile + "MV_" + _expression
-        : AggregationFunctionType.PERCENTILETDIGEST.getName() + _percentile + "MV_" + _expression;
-  }
-
   @Override
   public String getResultColumnName() {
     return _version == 0 ? AggregationFunctionType.PERCENTILETDIGEST.getName().toLowerCase() + (int) _percentile + "mv("
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/reduce/AggregationDataTableReducer.java b/pinot-core/src/main/java/org/apache/pinot/core/query/reduce/AggregationDataTableReducer.java
index 84267db3c2..811c9738ba 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/reduce/AggregationDataTableReducer.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/reduce/AggregationDataTableReducer.java
@@ -45,13 +45,9 @@ import org.roaringbitmap.RoaringBitmap;
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class AggregationDataTableReducer implements DataTableReducer {
   private final QueryContext _queryContext;
-  private final AggregationFunction[] _aggregationFunctions;
-  private final List<Pair<AggregationFunction, FilterContext>> _filteredAggregationFunctions;
 
   AggregationDataTableReducer(QueryContext queryContext) {
     _queryContext = queryContext;
-    _aggregationFunctions = queryContext.getAggregationFunctions();
-    _filteredAggregationFunctions = queryContext.getFilteredAggregationFunctions();
   }
 
   /**
@@ -80,7 +76,9 @@ public class AggregationDataTableReducer implements DataTableReducer {
 
   private void reduceWithIntermediateResult(DataSchema dataSchema, Collection<DataTable> dataTables,
       BrokerResponseNative brokerResponseNative) {
-    int numAggregationFunctions = _aggregationFunctions.length;
+    AggregationFunction[] aggregationFunctions = _queryContext.getAggregationFunctions();
+    assert aggregationFunctions != null;
+    int numAggregationFunctions = aggregationFunctions.length;
     Object[] intermediateResults = new Object[numAggregationFunctions];
     for (DataTable dataTable : dataTables) {
       for (int i = 0; i < numAggregationFunctions; i++) {
@@ -100,14 +98,14 @@ public class AggregationDataTableReducer implements DataTableReducer {
         if (mergedIntermediateResult == null) {
           intermediateResults[i] = intermediateResultToMerge;
         } else {
-          intermediateResults[i] = _aggregationFunctions[i].merge(mergedIntermediateResult, intermediateResultToMerge);
+          intermediateResults[i] = aggregationFunctions[i].merge(mergedIntermediateResult, intermediateResultToMerge);
         }
         Tracing.ThreadAccountantOps.sampleAndCheckInterruptionPeriodically(i);
       }
     }
     Object[] finalResults = new Object[numAggregationFunctions];
     for (int i = 0; i < numAggregationFunctions; i++) {
-      AggregationFunction aggregationFunction = _aggregationFunctions[i];
+      AggregationFunction aggregationFunction = aggregationFunctions[i];
       Comparable result = aggregationFunction.extractFinalResult(intermediateResults[i]);
       finalResults[i] = result == null ? null : aggregationFunction.getFinalResultColumnType().convert(result);
     }
@@ -116,7 +114,9 @@ public class AggregationDataTableReducer implements DataTableReducer {
 
   private void reduceWithFinalResult(DataSchema dataSchema, DataTable dataTable,
       BrokerResponseNative brokerResponseNative) {
-    int numAggregationFunctions = _aggregationFunctions.length;
+    AggregationFunction[] aggregationFunctions = _queryContext.getAggregationFunctions();
+    assert aggregationFunctions != null;
+    int numAggregationFunctions = aggregationFunctions.length;
     Object[] finalResults = new Object[numAggregationFunctions];
     for (int i = 0; i < numAggregationFunctions; i++) {
       ColumnDataType columnDataType = dataSchema.getColumnDataType(i);
@@ -154,20 +154,18 @@ public class AggregationDataTableReducer implements DataTableReducer {
    * Constructs the DataSchema for the rows before the post-aggregation (SQL mode).
    */
   private DataSchema getPrePostAggregationDataSchema() {
-    int numAggregationFunctions = _aggregationFunctions.length;
-    String[] columnNames = new String[numAggregationFunctions];
-    ColumnDataType[] columnDataTypes = new ColumnDataType[numAggregationFunctions];
-
-    int i = 0;
-    for (Pair<AggregationFunction, FilterContext> aggFilterPair : _filteredAggregationFunctions) {
-      AggregationFunction aggregationFunction = aggFilterPair.getLeft();
-      String columnName =
-          AggregationFunctionUtils.getResultColumnName(aggregationFunction, aggFilterPair.getRight());
-      columnNames[i] = columnName;
+    List<Pair<AggregationFunction, FilterContext>> filteredAggregationFunctions =
+        _queryContext.getFilteredAggregationFunctions();
+    assert filteredAggregationFunctions != null;
+    int numColumns = filteredAggregationFunctions.size();
+    String[] columnNames = new String[numColumns];
+    ColumnDataType[] columnDataTypes = new ColumnDataType[numColumns];
+    for (int i = 0; i < numColumns; i++) {
+      Pair<AggregationFunction, FilterContext> pair = filteredAggregationFunctions.get(i);
+      AggregationFunction aggregationFunction = pair.getLeft();
+      columnNames[i] = AggregationFunctionUtils.getResultColumnName(aggregationFunction, pair.getRight());
       columnDataTypes[i] = aggregationFunction.getFinalResultColumnType();
-      i++;
     }
-
     return new DataSchema(columnNames, columnDataTypes);
   }
 }
diff --git a/pinot-core/src/test/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtilsTest.java b/pinot-core/src/test/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtilsTest.java
index eaf9d3fbe3..889c6582a5 100644
--- a/pinot-core/src/test/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtilsTest.java
+++ b/pinot-core/src/test/java/org/apache/pinot/core/operator/blocks/results/ResultsBlockUtilsTest.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.operator.blocks.results;
 import java.io.IOException;
 import org.apache.pinot.common.datatable.DataTable;
 import org.apache.pinot.common.utils.DataSchema;
+import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
 import org.apache.pinot.core.query.request.context.QueryContext;
 import org.apache.pinot.core.query.request.context.utils.QueryContextConverterUtils;
 import org.testng.annotations.Test;
@@ -38,7 +39,7 @@ public class ResultsBlockUtilsTest {
     DataTable dataTable = ResultsBlockUtils.buildEmptyQueryResults(queryContext).getDataTable(queryContext);
     DataSchema dataSchema = dataTable.getDataSchema();
     assertEquals(dataSchema.getColumnNames(), new String[]{"*"});
-    assertEquals(dataSchema.getColumnDataTypes(), new DataSchema.ColumnDataType[]{DataSchema.ColumnDataType.STRING});
+    assertEquals(dataSchema.getColumnDataTypes(), new ColumnDataType[]{ColumnDataType.STRING});
     assertEquals(dataTable.getNumberOfRows(), 0);
 
     // Aggregation
@@ -46,9 +47,9 @@ public class ResultsBlockUtilsTest {
         QueryContextConverterUtils.getQueryContext("SELECT COUNT(*), SUM(a), MAX(b) FROM testTable WHERE foo = 'bar'");
     dataTable = ResultsBlockUtils.buildEmptyQueryResults(queryContext).getDataTable(queryContext);
     dataSchema = dataTable.getDataSchema();
-    assertEquals(dataSchema.getColumnNames(), new String[]{"count_star", "sum_a", "max_b"});
-    assertEquals(dataSchema.getColumnDataTypes(), new DataSchema.ColumnDataType[]{
-        DataSchema.ColumnDataType.LONG, DataSchema.ColumnDataType.DOUBLE, DataSchema.ColumnDataType.DOUBLE
+    assertEquals(dataSchema.getColumnNames(), new String[]{"count(*)", "sum(a)", "max(b)"});
+    assertEquals(dataSchema.getColumnDataTypes(), new ColumnDataType[]{
+        ColumnDataType.LONG, ColumnDataType.DOUBLE, ColumnDataType.DOUBLE
     });
     assertEquals(dataTable.getNumberOfRows(), 1);
     assertEquals(dataTable.getLong(0, 0), 0L);
@@ -61,9 +62,8 @@ public class ResultsBlockUtilsTest {
     dataTable = ResultsBlockUtils.buildEmptyQueryResults(queryContext).getDataTable(queryContext);
     dataSchema = dataTable.getDataSchema();
     assertEquals(dataSchema.getColumnNames(), new String[]{"c", "d", "count(*)", "sum(a)", "max(b)"});
-    assertEquals(dataSchema.getColumnDataTypes(), new DataSchema.ColumnDataType[]{
-        DataSchema.ColumnDataType.STRING, DataSchema.ColumnDataType.STRING, DataSchema.ColumnDataType.LONG,
-        DataSchema.ColumnDataType.DOUBLE, DataSchema.ColumnDataType.DOUBLE
+    assertEquals(dataSchema.getColumnDataTypes(), new ColumnDataType[]{
+        ColumnDataType.STRING, ColumnDataType.STRING, ColumnDataType.LONG, ColumnDataType.DOUBLE, ColumnDataType.DOUBLE
     });
     assertEquals(dataTable.getNumberOfRows(), 0);
 
@@ -72,8 +72,9 @@ public class ResultsBlockUtilsTest {
     dataTable = ResultsBlockUtils.buildEmptyQueryResults(queryContext).getDataTable(queryContext);
     dataSchema = dataTable.getDataSchema();
     assertEquals(dataSchema.getColumnNames(), new String[]{"a", "b"});
-    assertEquals(dataSchema.getColumnDataTypes(), new DataSchema.ColumnDataType[]{DataSchema.ColumnDataType.STRING,
-        DataSchema.ColumnDataType.STRING});
+    assertEquals(dataSchema.getColumnDataTypes(), new ColumnDataType[]{
+        ColumnDataType.STRING, ColumnDataType.STRING
+    });
     assertEquals(dataTable.getNumberOfRows(), 0);
   }
 }
diff --git a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AggregationFunctionFactoryTest.java b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AggregationFunctionFactoryTest.java
index a29694ef79..ea83e490e1 100644
--- a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AggregationFunctionFactoryTest.java
+++ b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AggregationFunctionFactoryTest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.pinot.core.query.aggregation.function;
 
+import java.util.Arrays;
+import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.request.context.FunctionContext;
 import org.apache.pinot.common.request.context.RequestContextUtils;
 import org.apache.pinot.core.query.request.context.QueryContext;
@@ -43,435 +45,373 @@ public class AggregationFunctionFactoryTest {
         AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof CountAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.COUNT);
-    assertEquals(aggregationFunction.getColumnName(), "count_star");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MiN");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MinAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MIN);
-    assertEquals(aggregationFunction.getColumnName(), "min_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MaX");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MaxAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MAX);
-    assertEquals(aggregationFunction.getColumnName(), "max_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("SuM");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof SumAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.SUM);
-    assertEquals(aggregationFunction.getColumnName(), "sum_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("SuMPreCIsiON");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof SumPrecisionAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.SUMPRECISION);
-    assertEquals(aggregationFunction.getColumnName(), "sumPrecision_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("AvG");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof AvgAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.AVG);
-    assertEquals(aggregationFunction.getColumnName(), "avg_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MoDe");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof ModeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MODE);
-    assertEquals(aggregationFunction.getColumnName(), "mode_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'BOOLEAN')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstIntValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_BOOLEAN");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'INT')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstIntValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_INT");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'LONG')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstLongValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_LONG");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'FLOAT')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstFloatValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_FLOAT");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'DOUBLE')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstDoubleValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_DOUBLE");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FiRsTwItHtImE", "(column,timeColumn,'STRING')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FirstStringValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FIRSTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "firstWithTime_column_timeColumn_STRING");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'BOOLEAN')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastIntValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_BOOLEAN");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'INT')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastIntValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_INT");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'LONG')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastLongValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_LONG");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'FLOAT')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastFloatValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_FLOAT");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'DOUBLE')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastDoubleValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_DOUBLE");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("LaStWiThTiMe", "(column,timeColumn,'STRING')");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof LastStringValueWithTimeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.LASTWITHTIME);
-    assertEquals(aggregationFunction.getColumnName(), "lastWithTime_column_timeColumn_STRING");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MiNmAxRaNgE");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MinMaxRangeAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MINMAXRANGE);
-    assertEquals(aggregationFunction.getColumnName(), "minMaxRange_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnT");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNT);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCount_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnThLl");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountHLLAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTHLL);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountHLL_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnTrAwHlL");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountRawHLLAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTRAWHLL);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountRawHLL_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("FaStHlL");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FastHLLAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.FASTHLL);
-    assertEquals(aggregationFunction.getColumnName(), "fastHLL_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLe5");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILE);
-    assertEquals(aggregationFunction.getColumnName(), "percentile5_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeEsT50");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileEst50_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeRaWEsT50");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawEst50_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeTdIgEsT99");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest99_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeRaWTdIgEsT99");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWTDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawTDigest99_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLe", "(column, 5)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILE);
-    assertEquals(aggregationFunction.getColumnName(), "percentile5.0_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentile(column, 5.0)");
 
     function = getFunction("PeRcEnTiLe", "(column, 5.5)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILE);
-    assertEquals(aggregationFunction.getColumnName(), "percentile5.5_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentile(column, 5.5)");
 
     function = getFunction("PeRcEnTiLeEsT", "(column, 50)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileEst50.0_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentileest(column, 50.0)");
 
     function = getFunction("PeRcEnTiLeRaWeSt", "(column, 50)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawEst50.0_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentilerawest(column, 50.0)");
 
     function = getFunction("PeRcEnTiLeEsT", "(column, 55.555)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileEst55.555_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentileest(column, 55.555)");
 
     function = getFunction("PeRcEnTiLeRaWeSt", "(column, 55.555)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawEstAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawEst55.555_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentilerawest(column, 55.555)");
 
     function = getFunction("PeRcEnTiLeTdIgEsT", "(column, 99)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest99.0_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentiletdigest(column, 99.0)");
 
     function = getFunction("PeRcEnTiLeTdIgEsT", "(column, 99.9999)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest99.9999_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentiletdigest(column, 99.9999)");
 
     function = getFunction("PeRcEnTiLeRaWtDiGeSt", "(column, 99)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWTDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawTDigest99.0_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentilerawtdigest(column, 99.0)");
 
     function = getFunction("PeRcEnTiLeRaWtDiGeSt", "(column, 99.9999)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileRawTDigestAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILERAWTDIGEST);
-    assertEquals(aggregationFunction.getColumnName(), "percentileRawTDigest99.9999_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentilerawtdigest(column, 99.9999)");
 
     function = getFunction("CoUnTmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof CountMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.COUNTMV);
-    assertEquals(aggregationFunction.getColumnName(), "countMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MiNmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MinMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MINMV);
-    assertEquals(aggregationFunction.getColumnName(), "minMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MaXmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MaxMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MAXMV);
-    assertEquals(aggregationFunction.getColumnName(), "maxMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("SuMmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof SumMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.SUMMV);
-    assertEquals(aggregationFunction.getColumnName(), "sumMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("AvGmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof AvgMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.AVGMV);
-    assertEquals(aggregationFunction.getColumnName(), "avgMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("AvG_mV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof AvgMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.AVGMV);
-    assertEquals(aggregationFunction.getColumnName(), "avgMV_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "avgmv(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("MiNmAxRaNgEmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof MinMaxRangeMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.MINMAXRANGEMV);
-    assertEquals(aggregationFunction.getColumnName(), "minMaxRangeMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnTmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTMV);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnThLlMv");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountHLLMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTHLLMV);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountHLLMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCt_CoUnT_hLl_Mv");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountHLLMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTHLLMV);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountHLLMV_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "distinctcounthllmv(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("DiStInCtCoUnTrAwHlLmV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof DistinctCountRawHLLMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCTCOUNTRAWHLLMV);
-    assertEquals(aggregationFunction.getColumnName(), "distinctCountRawHLLMV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLe10Mv");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentile10MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeEsT90mV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileEstMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileEst90MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeTdIgEsT95mV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest95MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLe_TdIgEsT_95_mV");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest95MV_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "percentiletdigest95mv(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("PeRcEnTiLeMv", "(column, 10)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentile10.0MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentilemv(column, 10.0)");
 
     function = getFunction("PeRcEnTiLeEsTmV", "(column, 90)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileEstMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILEESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileEst90.0MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentileestmv(column, 90.0)");
 
     function = getFunction("PeRcEnTiLeTdIgEsTmV", "(column, 95)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest95.0MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentiletdigestmv(column, 95.0)");
 
     function = getFunction("PeRcEnTiLe_TdIgEsT_mV", "(column, 95)");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof PercentileTDigestMVAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.PERCENTILETDIGESTMV);
-    assertEquals(aggregationFunction.getColumnName(), "percentileTDigest95.0MV_column");
     assertEquals(aggregationFunction.getResultColumnName(), "percentiletdigestmv(column, 95.0)");
 
     function = getFunction("bool_and");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof BooleanAndAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.BOOLAND);
-    assertEquals(aggregationFunction.getColumnName(), "boolAnd_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "booland(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("bool_or");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof BooleanOrAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.BOOLOR);
-    assertEquals(aggregationFunction.getColumnName(), "boolOr_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "boolor(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("skewness");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FourthMomentAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.SKEWNESS);
-    assertEquals(aggregationFunction.getColumnName(), "skewness_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "skewness(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
 
     function = getFunction("kurtosis");
     aggregationFunction = AggregationFunctionFactory.getAggregationFunction(function, DUMMY_QUERY_CONTEXT);
     assertTrue(aggregationFunction instanceof FourthMomentAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.KURTOSIS);
-    assertEquals(aggregationFunction.getColumnName(), "kurtosis_column");
-    assertEquals(aggregationFunction.getResultColumnName(), "kurtosis(column)");
+    assertEquals(aggregationFunction.getResultColumnName(), function.toString());
   }
 
   private FunctionContext getFunction(String functionName) {
@@ -486,11 +426,13 @@ public class AggregationFunctionFactoryTest {
   public void testAggregationFunctionWithMultipleArgs() {
     QueryContext queryContext =
         QueryContextConverterUtils.getQueryContext("SELECT DISTINCT column1, column2, column3 FROM testTable");
-    AggregationFunction aggregationFunction = AggregationFunctionFactory
-        .getAggregationFunction(queryContext.getSelectExpressions().get(0).getFunction(), queryContext);
+    AggregationFunction aggregationFunction =
+        AggregationFunctionFactory.getAggregationFunction(queryContext.getSelectExpressions().get(0).getFunction(),
+            queryContext);
     assertTrue(aggregationFunction instanceof DistinctAggregationFunction);
     assertEquals(aggregationFunction.getType(), AggregationFunctionType.DISTINCT);
-    assertEquals(aggregationFunction.getColumnName(), "distinct_column1:column2:column3");
-    assertEquals(aggregationFunction.getResultColumnName(), "distinct(column1:column2:column3)");
+    assertEquals(aggregationFunction.getInputExpressions(),
+        Arrays.asList(ExpressionContext.forIdentifier("column1"), ExpressionContext.forIdentifier("column2"),
+            ExpressionContext.forIdentifier("column3")));
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org