From de129f4c851a897889bf75ae88dbecffc4c73548 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Wed, 4 Apr 2018 14:18:01 -0300 Subject: [PATCH] CQL fromJson(null) throws NullPointerException --- .../org/apache/cassandra/cql3/functions/FunctionCall.java | 2 ++ .../cassandra/cql3/validation/entities/JsonTest.java | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/java/org/apache/cassandra/cql3/functions/FunctionCall.java b/src/java/org/apache/cassandra/cql3/functions/FunctionCall.java index 4f53c9847473..323f1bb40ce1 100644 --- a/src/java/org/apache/cassandra/cql3/functions/FunctionCall.java +++ b/src/java/org/apache/cassandra/cql3/functions/FunctionCall.java @@ -98,6 +98,8 @@ public boolean containsBindMarker() private static Term.Terminal makeTerminal(Function fun, ByteBuffer result, int version) throws InvalidRequestException { + if (result == null) + return null; if (!(fun.returnType() instanceof CollectionType)) return new Constants.Value(result); diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java index 0f29928f9def..46cdd52e8d3a 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java @@ -247,6 +247,13 @@ public void testFromJsonFct() throws Throwable // handle nulls execute("INSERT INTO %s (k, asciival) VALUES (?, fromJson(?))", 0, null); + assertRows(execute("SELECT k, asciival FROM %s WHERE k = ?", 0), row(0, null)); + + execute("INSERT INTO %s (k, frozenmapval) VALUES (?, fromJson(?))", 0, null); + assertRows(execute("SELECT k, frozenmapval FROM %s WHERE k = ?", 0), row(0, null)); + + execute("INSERT INTO %s (k, udtval) VALUES (?, fromJson(?))", 0, null); + assertRows(execute("SELECT k, udtval FROM %s WHERE k = ?", 0), row(0, null)); // ================ ascii ================ execute("INSERT INTO %s (k, asciival) VALUES (?, fromJson(?))", 0, "\"ascii text\"");