From f60bfc538e339eeecf1b273b23fef7e88113dd61 Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Mon, 3 Jun 2019 13:34:09 -0700 Subject: [PATCH] discard filter when processing subtotalsSpec --- .../groupby/strategy/GroupByStrategyV2.java | 2 +- .../query/groupby/GroupByQueryRunnerTest.java | 90 +++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java index 7a5f6e8147b4..cd6988392e6c 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java @@ -390,7 +390,7 @@ public Sequence processSubtotalsSpec( final List closeOnExit = new ArrayList<>(); try { - GroupByQuery queryWithoutSubtotalsSpec = query.withSubtotalsSpec(null); + GroupByQuery queryWithoutSubtotalsSpec = query.withSubtotalsSpec(null).withDimFilter(null); List> subtotals = query.getSubtotalsSpec(); Supplier grouperSupplier = Suppliers.memoize( diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java index 36b79943828b..27d0da9b9527 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java @@ -6787,6 +6787,96 @@ public void testGroupByWithSubtotalsSpec() TestHelper.assertExpectedObjects(expectedResults, results, "subtotal"); } + // https://github.com/apache/incubator-druid/issues/7820 + @Test + public void testGroupByWithSubtotalsSpecWithRenamedDimensionAndFilter() + { + if (!config.getDefaultStrategy().equals(GroupByStrategySelector.STRATEGY_V2)) { + return; + } + + GroupByQuery query = GroupByQuery + .builder() + .setDataSource(QueryRunnerTestHelper.dataSource) + .setQuerySegmentSpec(QueryRunnerTestHelper.firstToThird) + .setVirtualColumns(new ExpressionVirtualColumn("alias", "quality", ValueType.STRING, TestExprMacroTable.INSTANCE)) + .setDimensions(Lists.newArrayList( + new DefaultDimensionSpec("quality", "quality"), + new DefaultDimensionSpec("market", "market"), + new DefaultDimensionSpec("alias", "alias_renamed") + )) + .setAggregatorSpecs( + Arrays.asList( + QueryRunnerTestHelper.rowsCount, + new LongSumAggregatorFactory("idx", "index"), + new FloatSumAggregatorFactory("idxFloat", "indexFloat"), + new DoubleSumAggregatorFactory("idxDouble", "index") + ) + ) + .setDimFilter(new SelectorDimFilter("alias", "automotive", null)) + .setGranularity(QueryRunnerTestHelper.dayGran) + .setSubtotalsSpec(ImmutableList.of( + ImmutableList.of("alias_renamed"), + ImmutableList.of() + )) + .build(); + + List expectedResults = Arrays.asList( + GroupByQueryRunnerTestHelper.createExpectedRow( + "2011-04-01", + "alias_renamed", + "automotive", + "rows", + 1L, + "idx", + 135L, + "idxFloat", + 135.88510131835938f, + "idxDouble", + 135.88510131835938d + ), + GroupByQueryRunnerTestHelper.createExpectedRow( + "2011-04-02", + "alias_renamed", + "automotive", + "rows", + 1L, + "idx", + 147L, + "idxFloat", + 147.42593f, + "idxDouble", + 147.42593d + ), + + GroupByQueryRunnerTestHelper.createExpectedRow( + "2011-04-01T00:00:00.000Z", + "rows", + 1L, + "idx", + 135L, + "idxFloat", + 135.88510131835938f, + "idxDouble", + 135.88510131835938d + ), + GroupByQueryRunnerTestHelper.createExpectedRow( + "2011-04-02T00:00:00.000Z", + "rows", + 1L, + "idx", + 147L, + "idxFloat", + 147.42593f, + "idxDouble", + 147.42593d + ) + ); + + Iterable results = GroupByQueryRunnerTestHelper.runQuery(factory, runner, query); + TestHelper.assertExpectedObjects(expectedResults, results, "subtotal"); + } + @Test public void testGroupByWithSubtotalsSpecWithLongDimensionColumn() {