This is an automated email from the ASF dual-hosted git repository.
bbende pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/master by this push:
new 319979f NIFI-6039: Avoid NPE if Record Writer does not provide schema
319979f is described below
commit 319979f2563fc2631f08c4611ff9484a03b483bf
Author: Mark Payne <[email protected]>
AuthorDate: Thu Feb 14 16:04:25 2019 -0500
NIFI-6039: Avoid NPE if Record Writer does not provide schema
This closes #3310.
Signed-off-by: Bryan Bende <[email protected]>
---
.../serialization/record/ResultSetRecordSet.java | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
index 9848d0b..ee47c63 100644
---
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
+++
b/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);
- Optional<DataType> dataType =
readerSchema.getDataType(columnName);
- if (dataType.isPresent()) {
- return dataType.get();
+
+ if (readerSchema != null) {
+ Optional<DataType> dataType =
readerSchema.getDataType(columnName);
+ if (dataType.isPresent()) {
+ return dataType.get();
+ }
}
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,
RecordFieldType.DOUBLE, RecordFieldType.FLOAT,
RecordFieldType.INT, RecordFieldType.LONG, RecordFieldType.SHORT,
RecordFieldType.STRING, RecordFieldType.TIME,
RecordFieldType.TIMESTAMP)
- .map(recordFieldType -> recordFieldType.getDataType())
+ .map(RecordFieldType::getDataType)
.collect(Collectors.toList());
return RecordFieldType.CHOICE.getChoiceDataType(dataTypes);
@@ -219,9 +222,12 @@ public class ResultSetRecordSet implements RecordSet,
Closeable {
}
default: {
final String columnName =
rs.getMetaData().getColumnName(columnIndex);
- Optional<DataType> dataType =
readerSchema.getDataType(columnName);
- if (dataType.isPresent()) {
- return dataType.get();
+
+ if (readerSchema != null) {
+ Optional<DataType> dataType =
readerSchema.getDataType(columnName);
+ if (dataType.isPresent()) {
+ return dataType.get();
+ }
}
return getFieldType(sqlType,
rs.getMetaData().getColumnClassName(columnIndex)).getDataType();