Koji Kawamura created NIFI-4882:
-----------------------------------

             Summary: CSVRecordReader should utilize specified 
date/time/timestamp format at its convertSimpleIfPossible method
                 Key: NIFI-4882
                 URL: https://issues.apache.org/jira/browse/NIFI-4882
             Project: Apache NiFi
          Issue Type: Bug
          Components: Extensions
            Reporter: Koji Kawamura


CSVRecordReader.convertSimpleIfPossible method is used by ValidateRecord. The 
method does not coerce values to the target schema field type if the raw string 
representation in the input CSV file is not compatible.

The type compatibility check is implemented as follows. But it does not use 
user specified date/time/timestamp format:

{code}
                // This will return 'false' for input '01/01/1900' when user 
specified custom format 'MM/dd/YYYY'
                if (DataTypeUtils.isCompatibleDataType(trimmed, dataType)) {
                    // The LAZY_DATE_FORMAT should be used to check 
compatibility, too.
                    return DataTypeUtils.convertType(trimmed, dataType, 
LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName);
                } else {
                    return value;
                }
{code}

If input date strings have different format than the default format 
'yyyy-MM-dd', then ValidateRecord processor can not validate input records.

JacksonCSVRecordReader has the identical methods with CSVRecordReader. Those 
classes should have an abstract class.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to