You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mt...@apache.org on 2020/11/03 20:44:28 UTC

[nifi] branch main updated: NIFI-7976: Infer ints in JSON when all values fit in integer type NIFI-7976: Fixed unit test

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

mthomsen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 71a5735  NIFI-7976: Infer ints in JSON when all values fit in integer type NIFI-7976: Fixed unit test
71a5735 is described below

commit 71a5735f63182e93418a36af1946645805938c44
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Tue Nov 3 11:50:46 2020 -0500

    NIFI-7976: Infer ints in JSON when all values fit in integer type
    NIFI-7976: Fixed unit test
    
    This closes #4645
    
    Signed-off-by: Mike Thomsen <mt...@apache.org>
---
 .../org/apache/nifi/json/JsonSchemaInference.java     |  5 ++++-
 .../nifi/json/TestInferJsonSchemaAccessStrategy.java  |  2 +-
 .../org/apache/nifi/json/TestJsonSchemaInference.java | 19 ++++++++++---------
 .../src/test/resources/json/data-types.json           |  1 +
 4 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonSchemaInference.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonSchemaInference.java
index 10b4129..0873a77 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonSchemaInference.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/json/JsonSchemaInference.java
@@ -61,7 +61,10 @@ public class JsonSchemaInference extends HierarchicalSchemaInference<JsonNode> {
             if (jsonNode.isBigInteger()) {
                 return RecordFieldType.BIGINT.getDataType();
             }
-            return RecordFieldType.LONG.getDataType();
+            if (jsonNode.isLong()) {
+                return RecordFieldType.LONG.getDataType();
+            }
+            return RecordFieldType.INT.getDataType();
         }
 
         if (jsonNode.isBigDecimal()) {
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestInferJsonSchemaAccessStrategy.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestInferJsonSchemaAccessStrategy.java
index a4f356f..509986a 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestInferJsonSchemaAccessStrategy.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestInferJsonSchemaAccessStrategy.java
@@ -182,7 +182,7 @@ public class TestInferJsonSchemaAccessStrategy {
         assertEquals(2, possibleTypes.size());
         assertTrue(possibleTypes.contains(RecordFieldType.STRING.getDataType()));
         assertTrue(possibleTypes.contains(RecordFieldType.ARRAY.getArrayDataType(RecordFieldType.CHOICE.getChoiceDataType(
-                RecordFieldType.LONG.getDataType(),
+                RecordFieldType.INT.getDataType(),
                 RecordFieldType.STRING.getDataType()
         ))));
 
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonSchemaInference.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonSchemaInference.java
index 82b5b87..2878013 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonSchemaInference.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/json/TestJsonSchemaInference.java
@@ -54,13 +54,14 @@ public class TestJsonSchemaInference {
         }
 
         assertSame(RecordFieldType.STRING, schema.getDataType("varcharc").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("uuid").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("tinyintc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("uuid").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("tinyintc").get().getFieldType());
         assertSame(RecordFieldType.STRING, schema.getDataType("textc").get().getFieldType());
         assertEquals(RecordFieldType.DATE.getDataType("yyyy-MM-dd"), schema.getDataType("datec").get());
-        assertSame(RecordFieldType.LONG, schema.getDataType("smallintc").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("mediumintc").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("intc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("smallintc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("mediumintc").get().getFieldType());
+        assertSame(RecordFieldType.LONG, schema.getDataType("longintc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("intc").get().getFieldType());
         assertSame(RecordFieldType.BIGINT, schema.getDataType("bigintc").get().getFieldType());
         assertSame(RecordFieldType.DOUBLE, schema.getDataType("floatc").get().getFieldType());
         assertSame(RecordFieldType.DOUBLE, schema.getDataType("doublec").get().getFieldType());
@@ -71,14 +72,14 @@ public class TestJsonSchemaInference {
         assertEquals(RecordFieldType.STRING.getDataType(), schema.getDataType("tinytextc").get());
         assertEquals(RecordFieldType.STRING.getDataType(), schema.getDataType("blobc").get());
         assertEquals(RecordFieldType.STRING.getDataType(), schema.getDataType("mediumtextc").get());
-        assertSame(RecordFieldType.LONG, schema.getDataType("enumc").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("setc").get().getFieldType());
-        assertSame(RecordFieldType.LONG, schema.getDataType("boolc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("enumc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("setc").get().getFieldType());
+        assertSame(RecordFieldType.INT, schema.getDataType("boolc").get().getFieldType());
         assertEquals(RecordFieldType.STRING.getDataType(), schema.getDataType("binaryc").get());
         // We currently do not read BigDecimal from JSON as ObjectMapper in InferenceSchemaStrategy automatically reads it as double
 
         final List<String> fieldNames = schema.getFieldNames();
-        assertEquals(Arrays.asList("varcharc", "uuid", "tinyintc", "textc", "datec", "smallintc", "mediumintc", "intc", "bigintc",
+        assertEquals(Arrays.asList("varcharc", "uuid", "tinyintc", "textc", "datec", "smallintc", "mediumintc", "longintc", "intc", "bigintc",
                 "floatc", "doublec", "decimalc", "timestampc", "timec", "charc", "tinytextc", "blobc", "mediumtextc", "enumc", "setc", "boolc", "binaryc"), fieldNames);
     }
 }
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/data-types.json b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/data-types.json
index 343288e..92057fd 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/data-types.json
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/resources/json/data-types.json
@@ -6,6 +6,7 @@
   "datec": "2019-02-27",
   "smallintc": -8423,
   "mediumintc": 6008538,
+  "longintc": 2147483648,
   "intc": -1130599020,
   "bigintc": 171234567890123456789,
   "floatc": 182.33,