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

cwylie 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 0dcc2bc4697 Fixed NPE in `array_overlap` and `array_contains`. (#17465)
0dcc2bc4697 is described below

commit 0dcc2bc46970e5139273fc6b4b576b76495e2144
Author: Vivek Dhiman <[email protected]>
AuthorDate: Fri Nov 8 20:39:14 2024 -0800

    Fixed NPE in `array_overlap` and `array_contains`. (#17465)
---
 .../main/java/org/apache/druid/math/expr/Function.java   |  4 ++--
 .../query/expression/NestedDataExpressionsTest.java      | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/processing/src/main/java/org/apache/druid/math/expr/Function.java 
b/processing/src/main/java/org/apache/druid/math/expr/Function.java
index f79a0fc5a74..a4171cc8b35 100644
--- a/processing/src/main/java/org/apache/druid/math/expr/Function.java
+++ b/processing/src/main/java/org/apache/druid/math/expr/Function.java
@@ -3974,7 +3974,7 @@ public interface Function extends NamedFunction
     {
       if (args.get(1).isLiteral()) {
         final ExpressionType lhsType = args.get(0).getOutputType(inspector);
-        if (lhsType == null) {
+        if (lhsType == null || !(lhsType.isPrimitive() || 
lhsType.isPrimitiveArray())) {
           return this;
         }
         final ExpressionType lhsArrayType = 
ExpressionType.asArrayType(lhsType);
@@ -4107,7 +4107,7 @@ public interface Function extends NamedFunction
     {
       if (args.get(1).isLiteral()) {
         final ExpressionType lhsType = args.get(0).getOutputType(inspector);
-        if (lhsType == null) {
+        if (lhsType == null || !(lhsType.isPrimitive() || 
lhsType.isPrimitiveArray())) {
           return this;
         }
         final ExpressionType lhsArrayType = 
ExpressionType.asArrayType(lhsType);
diff --git 
a/processing/src/test/java/org/apache/druid/query/expression/NestedDataExpressionsTest.java
 
b/processing/src/test/java/org/apache/druid/query/expression/NestedDataExpressionsTest.java
index c9fe553469a..269f4b63372 100644
--- 
a/processing/src/test/java/org/apache/druid/query/expression/NestedDataExpressionsTest.java
+++ 
b/processing/src/test/java/org/apache/druid/query/expression/NestedDataExpressionsTest.java
@@ -419,6 +419,22 @@ public class NestedDataExpressionsTest extends 
InitializedNullHandlingTest
     eval = expr.eval(inputBindings);
     Assert.assertEquals(3L, eval.value());
     Assert.assertEquals(ExpressionType.LONG, eval.type());
+
+    expr = Parser.parse("array_contains(json_query_array(nest, '$.x'), 100)", 
MACRO_TABLE);
+    expr = expr.asSingleThreaded(inputBindings);
+    Assert.assertEquals(1L, expr.eval(inputBindings).value());
+
+    expr = Parser.parse("array_contains(json_query_array(nest, '$.x'), 101)", 
MACRO_TABLE);
+    expr = expr.asSingleThreaded(inputBindings);
+    Assert.assertEquals(0L, expr.eval(inputBindings).value());
+
+    expr = Parser.parse("array_overlap(json_query_array(nest, '$.x'), [100, 
101])", MACRO_TABLE);
+    expr = expr.asSingleThreaded(inputBindings);
+    Assert.assertEquals(1L, expr.eval(inputBindings).value());
+
+    expr = Parser.parse("array_overlap(json_query_array(nest, '$.x'), [101, 
102])", MACRO_TABLE);
+    expr = expr.asSingleThreaded(inputBindings);
+    Assert.assertEquals(0L, expr.eval(inputBindings).value());
   }
 
   @Test


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

Reply via email to