You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by bb...@apache.org on 2019/02/15 18:06:52 UTC

[nifi] branch master updated: NIFI-6039: Avoid NPE if Record Writer does not provide schema

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 <ma...@hotmail.com>
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 <bb...@apache.org>
---
 .../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();