This is an automated email from the ASF dual-hosted git repository.

gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new e76a5077ef Fix self-referential shape inspection in 
BaseExpressionColumnValueSelector. (#12669)
e76a5077ef is described below

commit e76a5077efe64ea3108ff1133339c1ba5d19163f
Author: Gian Merlino <[email protected]>
AuthorDate: Fri Jun 17 16:15:50 2022 -0700

    Fix self-referential shape inspection in BaseExpressionColumnValueSelector. 
(#12669)
    
    * Fix self-referential shape inspection in 
BaseExpressionColumnValueSelector.
    
    The new test would throw StackOverflowError on the old code.
    
    * Restore prior test.
---
 .../virtual/BaseExpressionColumnValueSelector.java |  2 +-
 .../druid/query/topn/TopNQueryRunnerTest.java      | 42 ++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git 
a/processing/src/main/java/org/apache/druid/segment/virtual/BaseExpressionColumnValueSelector.java
 
b/processing/src/main/java/org/apache/druid/segment/virtual/BaseExpressionColumnValueSelector.java
index 868196c600..a9fd30a130 100644
--- 
a/processing/src/main/java/org/apache/druid/segment/virtual/BaseExpressionColumnValueSelector.java
+++ 
b/processing/src/main/java/org/apache/druid/segment/virtual/BaseExpressionColumnValueSelector.java
@@ -86,7 +86,7 @@ public abstract class BaseExpressionColumnValueSelector 
implements ColumnValueSe
   @Override
   public void inspectRuntimeShape(final RuntimeShapeInspector inspector)
   {
-    inspector.visit("rowIdSupplier", this);
+    inspector.visit("rowIdSupplier", rowIdSupplier);
   }
 
   /**
diff --git 
a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java 
b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java
index 2a2f0c68b6..d475cc9f7f 100644
--- 
a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java
@@ -4614,6 +4614,48 @@ public class TopNQueryRunnerTest extends 
InitializedNullHandlingTest
     assertExpectedResults(expectedResults, query);
   }
 
+  @Test
+  public void testFullOnTopNAggregateLongVirtualColumn()
+  {
+    TopNQuery query = new TopNQueryBuilder()
+        .dataSource(QueryRunnerTestHelper.DATA_SOURCE)
+        .granularity(QueryRunnerTestHelper.ALL_GRAN)
+        .virtualColumns(new ExpressionVirtualColumn("v0", "index", 
ColumnType.LONG, ExprMacroTable.nil()))
+        .dimension(new DefaultDimensionSpec("quality", "quality"))
+        .metric("sumIndex")
+        .threshold(4)
+        .intervals(QueryRunnerTestHelper.FULL_ON_INTERVAL_SPEC)
+        .aggregators(Collections.singletonList(new 
LongSumAggregatorFactory("sumIndex", "v0")))
+        .build();
+
+    List<Result<TopNResultValue>> expectedResults = Collections.singletonList(
+        new Result<>(
+            DateTimes.of("2011-01-12T00:00:00.000Z"),
+            new TopNResultValue(
+                Arrays.<Map<String, Object>>asList(
+                    ImmutableMap.<String, Object>builder()
+                                .put("quality", "mezzanine")
+                                .put("sumIndex", 217586L)
+                                .build(),
+                    ImmutableMap.<String, Object>builder()
+                                .put("quality", "premium")
+                                .put("sumIndex", 210722L)
+                                .build(),
+                    ImmutableMap.<String, Object>builder()
+                                .put("quality", "automotive")
+                                .put("sumIndex", 12226L)
+                                .build(),
+                    ImmutableMap.<String, Object>builder()
+                                .put("quality", "entertainment")
+                                .put("sumIndex", 12038L)
+                                .build()
+                )
+            )
+        )
+    );
+    assertExpectedResults(expectedResults, query);
+  }
+
   @Test
   public void testTopNStringVirtualColumn()
   {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to