[ 
https://issues.apache.org/jira/browse/NIFI-10198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17609509#comment-17609509
 ] 

Sander Bylemans commented on NIFI-10198:
----------------------------------------

[~hejiang] that's the easy way out. Are there any more that you can think of 
that don't need mapping? Because you could say a primary key is optional.

So that means adjusting the description to: "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. The primary key is optional for the case 
of auto increment id's."

And then also changing the code to handle this.

> 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)

Reply via email to