diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java index 396c21ad74a..392d6155702 100644 --- a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java +++ b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java @@ -378,6 +378,10 @@ private static List> flatten(JsonNode node, JsonIndexConfig return Collections.emptyList(); } + if (node.isMissingNode()) { + return Collections.emptyList(); + } + // Value if (node.isValueNode()) { String valueAsText = node.asText(); diff --git a/pinot-spi/src/test/java/org/apache/pinot/spi/utils/JsonUtilsTest.java b/pinot-spi/src/test/java/org/apache/pinot/spi/utils/JsonUtilsTest.java index 8f425efef97..cf542926d39 100644 --- a/pinot-spi/src/test/java/org/apache/pinot/spi/utils/JsonUtilsTest.java +++ b/pinot-spi/src/test/java/org/apache/pinot/spi/utils/JsonUtilsTest.java @@ -632,4 +632,13 @@ public void testInferSchema() .addDateTime("hoursSinceEpoch", FieldSpec.DataType.INT, "1:HOURS:EPOCH", "1:HOURS").build(); Assert.assertEquals(inferredPinotSchema, expectedSchema); } + + @Test + public void testEmptyString() + throws IOException { + JsonIndexConfig jsonIndexConfig = new JsonIndexConfig(); + JsonNode jsonNode = JsonUtils.stringToJsonNode(""); + List> flattenedRecords = JsonUtils.flatten(jsonNode, jsonIndexConfig); + assertTrue(flattenedRecords.isEmpty()); + } }