This is an automated email from the ASF dual-hosted git repository. lakshsingla pushed a commit to branch 31.0.0 in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/31.0.0 by this push: new 986bc62b889 MSQ window functions: Fix boost column not being written to the frame in window stage (#17155) 986bc62b889 is described below commit 986bc62b8898595e8fc8169a7c0c4e52f9a52cab Author: Akshat Jain <akj...@gmail.com> AuthorDate: Wed Sep 25 16:31:37 2024 +0530 MSQ window functions: Fix boost column not being written to the frame in window stage (#17155) --- .../WindowOperatorQueryFrameProcessor.java | 1 + .../druid/msq/exec/MSQDrillWindowQueryTest.java | 99 ++++++++++++++++++++++ .../org/apache/druid/msq/exec/MSQWindowTest.java | 70 ++++++++++++--- 3 files changed, 156 insertions(+), 14 deletions(-) diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/WindowOperatorQueryFrameProcessor.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/WindowOperatorQueryFrameProcessor.java index aab8f1f1a6b..a0572a91b4d 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/WindowOperatorQueryFrameProcessor.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/querykit/WindowOperatorQueryFrameProcessor.java @@ -138,6 +138,7 @@ public class WindowOperatorQueryFrameProcessor implements FrameProcessor<Object> if (segmentGranularityVirtualColumn != null) { frameWriterVirtualColumns.add(segmentGranularityVirtualColumn); } + frameWriterVirtualColumns.add(this.partitionBoostVirtualColumn); this.frameWriterVirtualColumns = VirtualColumns.create(frameWriterVirtualColumns); } diff --git a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQDrillWindowQueryTest.java b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQDrillWindowQueryTest.java index 3e8e2796eea..a6e1e5ea3ac 100644 --- a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQDrillWindowQueryTest.java +++ b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQDrillWindowQueryTest.java @@ -167,6 +167,105 @@ public class MSQDrillWindowQueryTest extends DrillWindowQueryTest windowQueryTest(); } + @Override + @DrillTest("ntile_func/ntileFn_47") + @Test + public void test_ntile_func_ntileFn_47() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_49") + @Test + public void test_ntile_func_ntileFn_49() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_50") + @Test + public void test_ntile_func_ntileFn_50() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_51") + @Test + public void test_ntile_func_ntileFn_51() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_52") + @Test + public void test_ntile_func_ntileFn_52() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_53") + @Test + public void test_ntile_func_ntileFn_53() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_54") + @Test + public void test_ntile_func_ntileFn_54() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_55") + @Test + public void test_ntile_func_ntileFn_55() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_56") + @Test + public void test_ntile_func_ntileFn_56() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_57") + @Test + public void test_ntile_func_ntileFn_57() + { + useSingleWorker(); + windowQueryTest(); + } + + @Override + @DrillTest("ntile_func/ntileFn_58") + @Test + public void test_ntile_func_ntileFn_58() + { + useSingleWorker(); + windowQueryTest(); + } + /* Queries having window functions can give multiple correct results because of using MixShuffleSpec in the previous stage. So we want to use a single worker to get the same result everytime for such test cases. diff --git a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java index 2ba9d56ac69..486014101c5 100644 --- a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java +++ b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/exec/MSQWindowTest.java @@ -1242,20 +1242,20 @@ public class MSQWindowTest extends MSQTestBase .setExpectedResultRows( NullHandling.replaceWithDefault() ? ImmutableList.of( - new Object[]{"a", 5.0}, + new Object[]{"", 11.0}, new Object[]{"", 11.0}, new Object[]{"", 11.0}, new Object[]{"a", 5.0}, - new Object[]{"abc", 5.0}, - new Object[]{"", 11.0} + new Object[]{"a", 5.0}, + new Object[]{"abc", 5.0} ) : ImmutableList.of( - new Object[]{"a", 5.0}, + new Object[]{null, 8.0}, new Object[]{null, 8.0}, new Object[]{"", 3.0}, new Object[]{"a", 5.0}, - new Object[]{"abc", 5.0}, - new Object[]{null, 8.0} + new Object[]{"a", 5.0}, + new Object[]{"abc", 5.0} )) .setQueryContext(DEFAULT_MSQ_CONTEXT) .verifyResults(); @@ -1891,11 +1891,11 @@ public class MSQWindowTest extends MSQTestBase .build()) .setExpectedRowSignature(rowSignature) .setExpectedResultRows(ImmutableList.of( - new Object[]{"Auburn", 0L, 1698L}, - new Object[]{"Mexico City", 0L, 6136L}, - new Object[]{"Seoul", 663L, 5582L}, - new Object[]{"Tokyo", 0L, 12615L}, - new Object[]{"Santiago", 161L, 401L} + new Object[]{"Al Ain", 8L, 6334L}, + new Object[]{"Dubai", 3L, 6334L}, + new Object[]{"Dubai", 6323L, 6334L}, + new Object[]{"Tirana", 26L, 26L}, + new Object[]{"Benguela", 0L, 0L} )) .setQueryContext(DEFAULT_MSQ_CONTEXT) .verifyResults(); @@ -2225,17 +2225,59 @@ public class MSQWindowTest extends MSQTestBase // Stage 3, Worker 0 .setExpectedCountersForStageWorkerChannel( - CounterSnapshotMatcher.with().rows(13).bytes(1327).frames(1), + CounterSnapshotMatcher.with().rows(3).bytes(318).frames(1), 3, 0, "input0" ) .setExpectedCountersForStageWorkerChannel( - CounterSnapshotMatcher.with().rows(13).bytes(1379).frames(1), + CounterSnapshotMatcher.with().rows(3).bytes(330).frames(1), 3, 0, "output" ) .setExpectedCountersForStageWorkerChannel( - CounterSnapshotMatcher.with().rows(13).bytes(1327).frames(1), + CounterSnapshotMatcher.with().rows(3).bytes(318).frames(1), 3, 0, "shuffle" ) + + // Stage 3, Worker 1 + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(0, 3).bytes(0, 333).frames(0, 1), + 3, 1, "input0" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(3).bytes(345).frames(1), + 3, 1, "output" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(3).bytes(333).frames(1), + 3, 1, "shuffle" + ) + + // Stage 3, Worker 2 + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(0, 0, 3).bytes(0, 0, 352).frames(0, 0, 1), + 3, 2, "input0" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(3).bytes(364).frames(1), + 3, 2, "output" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(3).bytes(352).frames(1), + 3, 2, "shuffle" + ) + + // Stage 3, Worker 3 + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(0, 0, 0, 4).bytes(0, 0, 0, 426).frames(0, 0, 0, 1), + 3, 3, "input0" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(4).bytes(442).frames(1), + 3, 3, "output" + ) + .setExpectedCountersForStageWorkerChannel( + CounterSnapshotMatcher.with().rows(4).bytes(426).frames(1), + 3, 3, "shuffle" + ) .verifyResults(); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org