Akshat-Jain commented on code in PR #16804: URL: https://github.com/apache/druid/pull/16804#discussion_r1697098753
########## extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/WindowOperatorQueryKit.java: ########## @@ -112,7 +111,24 @@ public QueryDefinition makeQueryDefinition( false ); - dataSourcePlan.getSubQueryDefBuilder().ifPresent(queryDefBuilder::addAll); + final QueryDefinitionBuilder builder = QueryDefinition.builder(queryId); + dataSourcePlan.getSubQueryDefBuilder().ifPresent(builder::addAll); + + QueryDefinitionBuilder queryDefBuilder = QueryDefinition.builder(queryId); + if (isEmptyOverPresent) { + // If window has an empty over, we want a single worker to process entire data for window function evaluation. + // To achieve that, we are overriding the shuffle spec of the last stage to MixShuffleSpec. + int previousStageNumber = dataSourcePlan.getSubQueryDefBuilder().get().build().getFinalStageDefinition().getStageNumber(); + for (final StageDefinition stageDef : dataSourcePlan.getSubQueryDefBuilder().get().build().getStageDefinitions()) { + if (stageDef.getStageNumber() == previousStageNumber) { + queryDefBuilder.add(StageDefinition.builder(stageDef).shuffleSpec(MixShuffleSpec.instance())); + } else { + queryDefBuilder.add(StageDefinition.builder(stageDef)); + } + } + } else { + queryDefBuilder = builder; + } Review Comment: Makes sense, have made the change. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org