From 42b63d88b26184a375f49360846507a3081a0a53 Mon Sep 17 00:00:00 2001 From: Yash Mayya Date: Mon, 8 Jul 2024 14:47:18 +0530 Subject: [PATCH] Fix issue with group by combine operator when limit is zero (#13555) --- .../org/apache/pinot/core/data/table/IndexedTable.java | 6 +++--- .../integration/tests/OfflineClusterIntegrationTest.java | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pinot-core/src/main/java/org/apache/pinot/core/data/table/IndexedTable.java b/pinot-core/src/main/java/org/apache/pinot/core/data/table/IndexedTable.java index 9e7f50ec1e50..dd961a0154ff 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/data/table/IndexedTable.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/data/table/IndexedTable.java @@ -71,9 +71,9 @@ protected IndexedTable(DataSchema dataSchema, boolean hasFinalInput, QueryContex int trimSize, int trimThreshold, Map lookupMap) { super(dataSchema); - Preconditions.checkArgument(resultSize > 0, "Result size should be a non-zero positive integer"); - Preconditions.checkArgument(trimSize > 0, "Trim size should be a non-zero positive integer"); - Preconditions.checkArgument(trimThreshold > 0, "Trim threshold should be a non-zero positive integer"); + Preconditions.checkArgument(resultSize >= 0, "Result size can't be negative"); + Preconditions.checkArgument(trimSize >= 0, "Trim size can't be negative"); + Preconditions.checkArgument(trimThreshold >= 0, "Trim threshold can't be negative"); _lookupMap = lookupMap; _hasFinalInput = hasFinalInput; diff --git a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java index ca1ea0b1f957..43fe8e8878db 100644 --- a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java +++ b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java @@ -3472,6 +3472,13 @@ public void testBooleanAggregation() testQuery("SELECT BOOL_OR(CAST(Diverted AS BOOLEAN)) FROM mytable"); } + @Test(dataProvider = "useBothQueryEngines") + public void testGroupByAggregationWithLimitZero(boolean useMultiStageQueryEngine) + throws Exception { + setUseMultiStageQueryEngine(useMultiStageQueryEngine); + testQuery("SELECT Origin, SUM(ArrDelay) FROM mytable GROUP BY Origin LIMIT 0"); + } + private String buildSkipIndexesOption(String columnsAndIndexes) { return "SET " + SKIP_INDEXES + "='" + columnsAndIndexes + "'; "; }