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

yashmayya 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 5eb2dd7e37f Rename SSE aggregation function override for MV columns 
(#17056)
5eb2dd7e37f is described below

commit 5eb2dd7e37f5092fec1cc34709b7be9955a2ff27
Author: Yash Mayya <[email protected]>
AuthorDate: Thu Nov 20 09:00:43 2025 -0500

    Rename SSE aggregation function override for MV columns (#17056)
---
 .../BaseSingleStageBrokerRequestHandler.java       | 25 +++++++++++-----------
 .../broker/requesthandler/QueryOverrideTest.java   |  4 ++--
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java
index adb1642e532..4760e918eba 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java
@@ -140,7 +140,7 @@ public abstract class BaseSingleStageBrokerRequestHandler 
extends BaseBrokerRequ
   private static final Expression TRUE = 
RequestUtils.getLiteralExpression(true);
   private static final Expression STAR = 
RequestUtils.getIdentifierExpression("*");
   private static final int 
MAX_UNAVAILABLE_SEGMENTS_TO_PRINT_IN_QUERY_EXCEPTION = 10;
-  private static final Map<String, String> 
DISTINCT_MV_COL_FUNCTION_OVERRIDE_MAP = Map.ofEntries(
+  private static final Map<String, String> MV_COL_AGG_FUNCTION_OVERRIDE_MAP = 
Map.ofEntries(
       Map.entry("distinctcount", "distinctcountmv"),
       Map.entry("distinctcountbitmap", "distinctcountbitmapmv"),
       Map.entry("distinctcounthll", "distinctcounthllmv"),
@@ -1010,7 +1010,7 @@ public abstract class BaseSingleStageBrokerRequestHandler 
extends BaseBrokerRequ
 
     Schema schema = _tableCache.getSchema(rawTableName);
     if (schema != null) {
-      handleDistinctMultiValuedOverride(serverPinotQuery, schema);
+      handleAggFunctionMVOverride(serverPinotQuery, schema);
     }
     _queryOptimizer.optimize(serverPinotQuery, schema);
 
@@ -1312,7 +1312,6 @@ public abstract class BaseSingleStageBrokerRequestHandler 
extends BaseBrokerRequ
    * @return multivalued columns of the table .
    */
   private static boolean isMultiValueColumn(Schema tableSchema, String 
columnName) {
-
     DimensionFieldSpec dimensionFieldSpec = 
tableSchema.getDimensionSpec(columnName);
     return dimensionFieldSpec != null && 
!dimensionFieldSpec.isSingleValueField();
   }
@@ -1451,39 +1450,39 @@ public abstract class 
BaseSingleStageBrokerRequestHandler extends BaseBrokerRequ
   }
 
   /**
-   * Rewrites selected 'Distinct' prefixed function to 'Distinct----MV' 
function for the field of multivalued type.
+   * Rewrites aggregation functions to MV equivalents if the function operand 
is an MV column
    */
   @VisibleForTesting
-  static void handleDistinctMultiValuedOverride(PinotQuery pinotQuery, Schema 
tableSchema) {
+  static void handleAggFunctionMVOverride(PinotQuery pinotQuery, Schema 
tableSchema) {
     for (Expression expression : pinotQuery.getSelectList()) {
-      handleDistinctMultiValuedOverride(expression, tableSchema);
+      handleAggFunctionMVOverride(expression, tableSchema);
     }
     List<Expression> orderByExpressions = pinotQuery.getOrderByList();
     if (orderByExpressions != null) {
       for (Expression expression : orderByExpressions) {
         // NOTE: Order-by is always a Function with the ordering of the 
Expression
-        
handleDistinctMultiValuedOverride(expression.getFunctionCall().getOperands().get(0),
 tableSchema);
+        
handleAggFunctionMVOverride(expression.getFunctionCall().getOperands().get(0), 
tableSchema);
       }
     }
     Expression havingExpression = pinotQuery.getHavingExpression();
     if (havingExpression != null) {
-      handleDistinctMultiValuedOverride(havingExpression, tableSchema);
+      handleAggFunctionMVOverride(havingExpression, tableSchema);
     }
   }
 
   /**
-   * Rewrites selected 'Distinct' prefixed function to 'Distinct----MV' 
function for the field of multivalued type.
+   * Rewrites aggregation functions to MV equivalents if the function operand 
is an MV column
    */
-  private static void handleDistinctMultiValuedOverride(Expression expression, 
Schema tableSchema) {
+  private static void handleAggFunctionMVOverride(Expression expression, 
Schema tableSchema) {
     Function function = expression.getFunctionCall();
     if (function == null) {
       return;
     }
 
-    String overrideOperator = 
DISTINCT_MV_COL_FUNCTION_OVERRIDE_MAP.get(function.getOperator());
+    String overrideOperator = 
MV_COL_AGG_FUNCTION_OVERRIDE_MAP.get(function.getOperator());
     if (overrideOperator != null) {
       List<Expression> operands = function.getOperands();
-      if (operands.size() >= 1 && operands.get(0).isSetIdentifier() && 
isMultiValueColumn(tableSchema,
+      if (!operands.isEmpty() && operands.get(0).isSetIdentifier() && 
isMultiValueColumn(tableSchema,
           operands.get(0).getIdentifier().getName())) {
         // we are only checking the first operand that if its a MV column as 
all the overriding agg. fn.'s have
         // first operator is column name
@@ -1491,7 +1490,7 @@ public abstract class BaseSingleStageBrokerRequestHandler 
extends BaseBrokerRequ
       }
     } else {
       for (Expression operand : function.getOperands()) {
-        handleDistinctMultiValuedOverride(operand, tableSchema);
+        handleAggFunctionMVOverride(operand, tableSchema);
       }
     }
   }
diff --git 
a/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/QueryOverrideTest.java
 
b/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/QueryOverrideTest.java
index 22137c137bb..867a3833164 100644
--- 
a/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/QueryOverrideTest.java
+++ 
b/pinot-broker/src/test/java/org/apache/pinot/broker/requesthandler/QueryOverrideTest.java
@@ -78,9 +78,9 @@ public class QueryOverrideTest {
         + 
"{\"name\":\"col3\",\"dataType\":\"LONG\",\"singleValueField\":\"false\"}],"
         + 
"\"dateTimeFieldSpecs\":[{\"name\":\"dt1\",\"dataType\":\"INT\",\"format\":\"x:HOURS:EPOCH\","
         + "\"granularity\":\"1:HOURS\"}]}");
-    
BaseSingleStageBrokerRequestHandler.handleDistinctMultiValuedOverride(pinotQuery1,
 tableSchema);
+    
BaseSingleStageBrokerRequestHandler.handleAggFunctionMVOverride(pinotQuery1, 
tableSchema);
     
assertEquals(pinotQuery1.getSelectList().get(0).getFunctionCall().getOperator(),
 "distinctcount");
-    
BaseSingleStageBrokerRequestHandler.handleDistinctMultiValuedOverride(pinotQuery2,
 tableSchema);
+    
BaseSingleStageBrokerRequestHandler.handleAggFunctionMVOverride(pinotQuery2, 
tableSchema);
     
assertEquals(pinotQuery2.getSelectList().get(0).getFunctionCall().getOperator(),
 "distinctcountmv");
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to