Sander Bylemans created NIFI-10198:
--------------------------------------

             Summary: PutDatabaseRecord only checks required colums for 'Fail 
on Unmatched Columns'
                 Key: NIFI-10198
                 URL: https://issues.apache.org/jira/browse/NIFI-10198
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core Framework
    Affects Versions: 1.15.3
            Reporter: Sander Bylemans


The PutDatabaseRecord processor has a method called 
{{checkValuesForRequiredColumns}}:

{code:java}
    private void checkValuesForRequiredColumns(RecordSchema recordSchema, 
TableSchema tableSchema, DMLSettings settings) {
        final Set<String> normalizedFieldNames = 
getNormalizedColumnNames(recordSchema, settings.translateFieldNames);

        for (final String requiredColName : 
tableSchema.getRequiredColumnNames()) {
            final String normalizedColName = 
normalizeColumnName(requiredColName, settings.translateFieldNames);
            if (!normalizedFieldNames.contains(normalizedColName)) {
                String missingColMessage = "Record does not have a value for 
the Required column '" + requiredColName + "'";
                if (settings.failUnmappedColumns) {
                    getLogger().error(missingColMessage);
                    throw new IllegalArgumentException(missingColMessage);
                } else if (settings.warningUnmappedColumns) {
                    getLogger().warn(missingColMessage);
                }
            }
        }
    }
{code}

Which checks columns that are defined with a {{NOT NULL}} constraint. For the 
{{Unmatched Column Behavior}} with a value {{Fail on Unmatched Columns}}, this 
is not expected behavior as the description reads: "If an incoming record does 
not have a field mapping for *all* of the database table's columns, this 
property specifies how to handle the situation".

Therefore the method should be adjusted so it checks all columns, not just the 
"required" ones.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to