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]