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 <ravisingh...@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 <mattyb...@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(

Reply via email to