From cf386172f4ef5079cea4569230add300f398448f Mon Sep 17 00:00:00 2001 From: Kaikai Li <3408208097@qq.com> Date: Wed, 1 Jan 2025 17:53:38 +0800 Subject: [PATCH] Fix the issue of unexpected results generated by groupBy queries when containing subqueries(#17598) --- .../query/groupby/GroupByQueryQueryToolChest.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryQueryToolChest.java b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryQueryToolChest.java index b5712ebdda385..f77f62bcb947f 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryQueryToolChest.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryQueryToolChest.java @@ -42,17 +42,7 @@ import org.apache.druid.java.util.common.guava.Sequence; import org.apache.druid.java.util.common.guava.Sequences; import org.apache.druid.java.util.common.io.Closer; -import org.apache.druid.query.CacheStrategy; -import org.apache.druid.query.DataSource; -import org.apache.druid.query.FrameSignaturePair; -import org.apache.druid.query.IterableRowsCursorHelper; -import org.apache.druid.query.Query; -import org.apache.druid.query.QueryDataSource; -import org.apache.druid.query.QueryPlus; -import org.apache.druid.query.QueryResourceId; -import org.apache.druid.query.QueryRunner; -import org.apache.druid.query.QueryToolChest; -import org.apache.druid.query.SubqueryQueryRunner; +import org.apache.druid.query.*; import org.apache.druid.query.aggregation.AggregatorFactory; import org.apache.druid.query.aggregation.MetricManipulationFn; import org.apache.druid.query.aggregation.MetricManipulatorFns; @@ -271,6 +261,9 @@ private Sequence mergeGroupByResultsWithoutPushDown( if (((QueryDataSource) dataSource).getQuery().getContext() != null) { subqueryContext.putAll(((QueryDataSource) dataSource).getQuery().getContext()); } + if (canPerformSubquery(((QueryDataSource) dataSource).getQuery())) { + subqueryContext.put(QueryContexts.FINALIZE_KEY, true); + } subqueryContext.put(GroupByQuery.CTX_KEY_SORT_BY_DIMS_FIRST, false); subquery = (GroupByQuery) ((QueryDataSource) dataSource).getQuery().withOverriddenContext(subqueryContext);