Support Questions

Find answers, ask questions, and share your expertise

Upsert on conflict not quoting keys

Explorer

Hi,

I'm using a PutDatabaseRecord with UPSERT statement for a PostgreSQL database, but the ON CONFLICT keys are not being quoted event with the setting "Quote Column Identifiers" set to true.

DGaboleiro_0-1666334332405.png

ERROR:
Batch entry 0 INSERT INTO "eventstorage"."2062d999b1f26bcb32c3f39d22bd34"(..., "FDZ_UUID", ...) VALUES (...) ON CONFLICT (FDZUUID) DO UPDATE SET (...) = (..., EXCLUDED."FDZ_UUID", ...) was aborted: ERROR: column "fdzuuid" does not exist

I've seen an JIRA issue regarding this behavior and it is as Resolved: https://issues.apache.org/jira/browse/NIFI-8043.

I'm using nifi 1.17.0

@MattWhosorry for pinging you directly, but you were the assignee of the jira ticket and I've seen you commenting other similar posts.

 

Thanks

4 REPLIES 4

Master Guru

@DGaboleiro 
That is not me as the assignee to jira https://issues.apache.org/jira/browse/NIFI-8043.  But that Matt is an awesome guy @mburgess.

Thanks,

Matt

Explorer

Hey @mburgess could you give a little help in this ticket? I am still facing this issue and I'm not sure how to implement a workaroud

Explorer

Update: Created a custom processor by duplicating PutDatabaseRecord and added the if statement that was done in the commit https://github.com/apache/nifi/pull/4772/commits/0d6bca493842286ddae6a0577dfed55cd1808f7c. It solved the issue but I had to create a NAR with all of the bundled dependencies in nifi-standard-processors because I was having an error while starting NiFi (https://community.cloudera.com/t5/Support-Questions/Nifi-throwing-error-on-startup/m-p/240893)

I've checked the code base and the if statement is not present in Nifi > 1.12

 

Hey @MattWho, since you were the only one helping and @mburgess is not replying to the ticket, do you think it is possible/doable to create an hot-fix or something like that to have this commit? - I've seen more people complaining regarding this issue and it would be useful to not duplicate the source code just to add an if statement

 

Thanks

 

Super Guru

I wasn't able to reproduce this, I remember trying your example and the UPSERT worked for me, so I'm not sure what's going on