mirror of
https://github.com/apache/nifi.git
synced 2025-03-02 23:49:11 +00:00
NIFI-6039: Avoid NPE if Record Writer does not provide schema
This closes #3310. Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
parent
b508d6bfbc
commit
319979f256
10
nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
10
nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
@ -197,17 +197,20 @@ public class ResultSetRecordSet implements RecordSet, Closeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String columnName = rs.getMetaData().getColumnName(columnIndex);
|
final String columnName = rs.getMetaData().getColumnName(columnIndex);
|
||||||
|
|
||||||
|
if (readerSchema != null) {
|
||||||
Optional<DataType> dataType = readerSchema.getDataType(columnName);
|
Optional<DataType> dataType = readerSchema.getDataType(columnName);
|
||||||
if (dataType.isPresent()) {
|
if (dataType.isPresent()) {
|
||||||
return dataType.get();
|
return dataType.get();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final Object obj = rs.getObject(columnIndex);
|
final Object obj = rs.getObject(columnIndex);
|
||||||
if (obj == null || !(obj instanceof Record)) {
|
if (!(obj instanceof Record)) {
|
||||||
final List<DataType> dataTypes = Stream.of(RecordFieldType.BIGINT, RecordFieldType.BOOLEAN, RecordFieldType.BYTE, RecordFieldType.CHAR, RecordFieldType.DATE,
|
final List<DataType> dataTypes = Stream.of(RecordFieldType.BIGINT, RecordFieldType.BOOLEAN, RecordFieldType.BYTE, RecordFieldType.CHAR, RecordFieldType.DATE,
|
||||||
RecordFieldType.DOUBLE, RecordFieldType.FLOAT, RecordFieldType.INT, RecordFieldType.LONG, RecordFieldType.SHORT, RecordFieldType.STRING, RecordFieldType.TIME,
|
RecordFieldType.DOUBLE, RecordFieldType.FLOAT, RecordFieldType.INT, RecordFieldType.LONG, RecordFieldType.SHORT, RecordFieldType.STRING, RecordFieldType.TIME,
|
||||||
RecordFieldType.TIMESTAMP)
|
RecordFieldType.TIMESTAMP)
|
||||||
.map(recordFieldType -> recordFieldType.getDataType())
|
.map(RecordFieldType::getDataType)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
return RecordFieldType.CHOICE.getChoiceDataType(dataTypes);
|
return RecordFieldType.CHOICE.getChoiceDataType(dataTypes);
|
||||||
@ -219,10 +222,13 @@ public class ResultSetRecordSet implements RecordSet, Closeable {
|
|||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
final String columnName = rs.getMetaData().getColumnName(columnIndex);
|
final String columnName = rs.getMetaData().getColumnName(columnIndex);
|
||||||
|
|
||||||
|
if (readerSchema != null) {
|
||||||
Optional<DataType> dataType = readerSchema.getDataType(columnName);
|
Optional<DataType> dataType = readerSchema.getDataType(columnName);
|
||||||
if (dataType.isPresent()) {
|
if (dataType.isPresent()) {
|
||||||
return dataType.get();
|
return dataType.get();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return getFieldType(sqlType, rs.getMetaData().getColumnClassName(columnIndex)).getDataType();
|
return getFieldType(sqlType, rs.getMetaData().getColumnClassName(columnIndex)).getDataType();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user