You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2024/02/29 19:03:32 UTC
(nifi) 02/02: NIFI-12828: Added Mapping for BIT type to return INT and handled boolean case for postgres
This is an automated email from the ASF dual-hosted git repository.
mattyb149 pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit eeafa8354a4448020a6f936825fa47733a92bb71
Author: ravisingh <ra...@gmail.com>
AuthorDate: Wed Feb 28 19:43:07 2024 -0800
NIFI-12828: Added Mapping for BIT type to return INT and handled boolean case for postgres
Signed-off-by: Matt Burgess <ma...@apache.org>
---
.../org/apache/nifi/serialization/record/util/DataTypeUtils.java | 3 ++-
.../org/apache/nifi/serialization/record/TestDataTypeUtils.java | 2 +-
.../nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java | 8 +++++++-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
index 60d6d6bb88..fe457c75de 100644
--- a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
+++ b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/util/DataTypeUtils.java
@@ -2180,8 +2180,9 @@ public class DataTypeUtils {
switch (sqlType) {
case Types.BIGINT:
return RecordFieldType.BIGINT.getDataType();
- case Types.BOOLEAN:
case Types.BIT:
+ return RecordFieldType.INT.getDataType();
+ case Types.BOOLEAN:
return RecordFieldType.BOOLEAN.getDataType();
case Types.TINYINT:
return RecordFieldType.BYTE.getDataType();
diff --git a/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java b/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
index f2c214ae23..439637eab0 100644
--- a/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
+++ b/nifi-commons/nifi-record/src/test/java/org/apache/nifi/serialization/record/TestDataTypeUtils.java
@@ -493,7 +493,7 @@ public class TestDataTypeUtils {
@Test
public void testGetDataTypeFromSQLTypeValue() {
assertEquals(RecordFieldType.STRING.getDataType(), DataTypeUtils.getDataTypeFromSQLTypeValue(Types.CLOB));
- assertEquals(RecordFieldType.BOOLEAN.getDataType(), DataTypeUtils.getDataTypeFromSQLTypeValue(Types.BIT));
+ assertEquals(RecordFieldType.INT.getDataType(), DataTypeUtils.getDataTypeFromSQLTypeValue(Types.BIT));
assertEquals(RecordFieldType.ARRAY.getArrayDataType(RecordFieldType.BYTE.getDataType()), DataTypeUtils.getDataTypeFromSQLTypeValue(Types.BLOB));
assertEquals(RecordFieldType.STRING.getDataType(), DataTypeUtils.getDataTypeFromSQLTypeValue(Types.CHAR));
}
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-db-schema-registry-bundle/nifi-db-schema-registry-service/src/main/java/org/apache/nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java b/nifi-nar-bundles/nifi-standard-services/nifi-db-schema-registry-bundle/nifi-db-schema-registry-service/src/main/java/org/apache/nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java
index f9a1174ff2..cca7bc8d46 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-db-schema-registry-bundle/nifi-db-schema-registry-service/src/main/java/org/apache/nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-db-schema-registry-bundle/nifi-db-schema-registry-service/src/main/java/org/apache/nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java
@@ -157,7 +157,13 @@ public class DatabaseTableSchemaRegistry extends AbstractControllerService imple
// COLUMN_DEF must be read first to work around Oracle bug, see NIFI-4279 for details
final String defaultValue = columnResultSet.getString("COLUMN_DEF");
final String columnName = columnResultSet.getString("COLUMN_NAME");
- final int dataType = columnResultSet.getInt("DATA_TYPE");
+ String typeName = columnResultSet.getString("TYPE_NAME");
+ final int dataType;
+ if (typeName.equalsIgnoreCase("bool")) {
+ dataType = 16;
+ } else {
+ dataType = columnResultSet.getInt("DATA_TYPE");
+ }
final String nullableValue = columnResultSet.getString("IS_NULLABLE");
final boolean isNullable = "YES".equalsIgnoreCase(nullableValue) || nullableValue.isEmpty();
return new RecordField(