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

karan 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 4de1909d79b fix sql planner for json_value with returning boolean to 
plan as long type output (#18698)
4de1909d79b is described below

commit 4de1909d79bddfa751b32529989cab637ae62591
Author: Clint Wylie <[email protected]>
AuthorDate: Tue Oct 28 21:29:43 2025 -0700

    fix sql planner for json_value with returning boolean to plan as long type 
output (#18698)
---
 .../builtin/NestedDataOperatorConversions.java     | 10 ++---
 .../sql/calcite/CalciteNestedDataQueryTest.java    | 48 ++++++++++++++++++++++
 2 files changed, 53 insertions(+), 5 deletions(-)

diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/NestedDataOperatorConversions.java
 
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/NestedDataOperatorConversions.java
index 260b5a9932e..51e4fbc4e8c 100644
--- 
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/NestedDataOperatorConversions.java
+++ 
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/NestedDataOperatorConversions.java
@@ -312,15 +312,15 @@ public class NestedDataOperatorConversions
         }
 
         RelDataType sqlType = cx.getValidator().getValidatedNodeType(call);
+        final SqlTypeName sqlTypeName = sqlType.getSqlTypeName();
         SqlOperator jsonValueOperator;
-        if (SqlTypeName.INT_TYPES.contains(sqlType.getSqlTypeName())) {
+        if (SqlTypeName.INT_TYPES.contains(sqlTypeName) || 
SqlTypeName.BOOLEAN_TYPES.contains(sqlTypeName)) {
           jsonValueOperator = JsonValueBigintOperatorConversion.FUNCTION;
-        } else if (SqlTypeName.DECIMAL.equals(sqlType.getSqlTypeName()) ||
-                   
SqlTypeName.APPROX_TYPES.contains(sqlType.getSqlTypeName())) {
+        } else if (SqlTypeName.DECIMAL.equals(sqlTypeName) || 
SqlTypeName.APPROX_TYPES.contains(sqlTypeName)) {
           jsonValueOperator = JsonValueDoubleOperatorConversion.FUNCTION;
-        } else if 
(SqlTypeName.STRING_TYPES.contains(sqlType.getSqlTypeName())) {
+        } else if (SqlTypeName.STRING_TYPES.contains(sqlTypeName)) {
           jsonValueOperator = JsonValueVarcharOperatorConversion.FUNCTION;
-        } else if (SqlTypeName.ARRAY.equals(sqlType.getSqlTypeName())) {
+        } else if (SqlTypeName.ARRAY.equals(sqlTypeName)) {
           ColumnType elementType = 
Calcites.getColumnTypeForRelDataType(sqlType.getComponentType());
           switch (elementType.getType()) {
             case LONG:
diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
index 8d04c66ec11..95ff5b28b85 100644
--- 
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
+++ 
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java
@@ -2453,6 +2453,54 @@ public abstract class CalciteNestedDataQueryTest extends 
BaseCalciteQueryTest
         .run();
   }
 
+  @Test
+  public void testGroupByRootSingleTypeArrayLongElementFilteredBoolean()
+  {
+    testBuilder()
+        .sql(
+            "SELECT "
+            + "__time,"
+            + "SUM(cnt) "
+            + "FROM druid.arrays "
+            + "WHERE JSON_VALUE(arrayLongNulls, '$[1]' RETURNING BOOLEAN) IS 
NULL "
+            + "GROUP BY 1"
+        )
+        .queryContext(QUERY_CONTEXT_NO_STRINGIFY_ARRAY)
+        .expectedQueries(
+            ImmutableList.of(
+                GroupByQuery.builder()
+                            .setDataSource(DATA_SOURCE_ARRAYS)
+                            
.setInterval(querySegmentSpec(Filtration.eternity()))
+                            .setGranularity(Granularities.ALL)
+                            .setDimensions(
+                                dimensions(
+                                    new DefaultDimensionSpec("__time", "d0", 
ColumnType.LONG)
+                                )
+                            )
+                            .setVirtualColumns(
+                                new NestedFieldVirtualColumn("arrayLongNulls", 
"$[1]", "v0", ColumnType.LONG)
+                            )
+                            .setDimFilter(isNull("v0"))
+                            .setAggregatorSpecs(aggregators(new 
LongSumAggregatorFactory("a0", "cnt")))
+                            .setContext(QUERY_CONTEXT_NO_STRINGIFY_ARRAY)
+                            .build()
+            )
+        )
+        .expectedResults(
+            ImmutableList.of(
+                new Object[]{1672531200000L, 4L},
+                new Object[]{1672617600000L, 4L}
+            )
+        )
+        .expectedSignature(
+            RowSignature.builder()
+                        .add("__time", ColumnType.LONG)
+                        .add("EXPR$1", ColumnType.LONG)
+                        .build()
+        )
+        .run();
+  }
+
   @Test
   public void testGroupByRootSingleTypeArrayStringElement()
   {


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

Reply via email to