[
https://issues.apache.org/jira/browse/NIFI-10198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17609518#comment-17609518
]
He Jiang edited comment on NIFI-10198 at 9/26/22 2:13 PM:
----------------------------------------------------------
@sbylemans Another tricky case that I often used is adding a datetime column in
mysql table with the default value of CURRENT_TIMESTAMP to track the creation
time of a record.
Generally speaking, any column with default value of a table could be skipped
safely for putting record in.
So I just recommend to revise the description to "If an incoming record does
not have a field mapping for *all required columns* of the database table, this
property specifies how to handle the situation."
Any more thoughts?
was (Author: hejiang):
@sbylemans Another tricky case that I often used is adding a datetime column in
mysql table with the default value of CURRENT_TIMESTAMP to track the creation
time of a record.
Generally speaking, any column with default value of a table could be skipped
safely for putting record in.
So I just recommend to revise the description to "If an incoming record does
not have a field mapping for *all required columns* of the database table, this
property specifies how to handle the situation."
Any more thoughtw?
> 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
> Priority: Critical
> Labels: patch
>
> 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)