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)