This is an automated email from the ASF dual-hosted git repository.
mattyb149 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 8346bd7d0f NIFI-12828: Added Mapping for BIT type to return INT and
handled boolean case for postgres
8346bd7d0f is described below
commit 8346bd7d0f617f73660cc79a02798ddbe484606d
Author: ravisingh <[email protected]>
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 <[email protected]>
This closes #8445
---
.../org/apache/nifi/serialization/record/util/DataTypeUtils.java | 2 ++
.../org/apache/nifi/serialization/record/TestDataTypeUtils.java | 1 +
.../nifi/db/schemaregistry/DatabaseTableSchemaRegistry.java | 8 +++++++-
3 files changed, 10 insertions(+), 1 deletion(-)
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 d45b5053c3..cd7fe2da82 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
@@ -1917,6 +1917,8 @@ public class DataTypeUtils {
switch (sqlType) {
case Types.BIGINT:
return RecordFieldType.BIGINT.getDataType();
+ case Types.BIT:
+ return RecordFieldType.INT.getDataType();
case Types.BOOLEAN:
return RecordFieldType.BOOLEAN.getDataType();
case Types.TINYINT:
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 6aca3af079..72f3a315bf 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
@@ -558,6 +558,7 @@ public class TestDataTypeUtils {
@Test
public void testGetDataTypeFromSQLTypeValue() {
assertEquals(RecordFieldType.STRING.getDataType(),
DataTypeUtils.getDataTypeFromSQLTypeValue(Types.CLOB));
+ 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 b0ee1cb4c2..caf5888b11 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(