NIFI-12828: Added Mapping for BIT type to return INT and handled boolean case for postgres

Signed-off-by: Matt Burgess <mattyb149@apache.org>

This closes #8445
This commit is contained in:
ravisingh 2024-02-28 19:43:07 -08:00 committed by Matt Burgess
parent b368c281e8
commit 8346bd7d0f
3 changed files with 10 additions and 1 deletions

View File

@ -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:

View File

@ -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));
}

View File

@ -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(