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,