You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Juliano Medeiros (Jira)" <ji...@apache.org> on 2022/06/02 11:13:00 UTC

[jira] [Comment Edited] (NIFI-8043) PutDatabaseRecord Postgres Upsert On Conflict keys not quoted

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

Juliano Medeiros edited comment on NIFI-8043 at 6/2/22 11:12 AM:
-----------------------------------------------------------------

Morning, was it fixed? Because I'm using the latest release and I'm having the same problem. Can someone help me, ´please? 

 

Kind regards,

Juliano


was (Author: JIRAUSER290351):
Hello 
I need some help. 

I'm working on an ETL that extracts data from Progress and stores it into PostgreSQL.



However; when I have duplicate keys, I'm having problems with my upsert.

The problem is that the component is creating an invalid script. 
As you can see, it is missing the double quotes. It needs to be: ON CONFLICT ("cdConstrucao")



My settings are :




Deplayed error :

Kind regards
Juliano


Sent from my iPhone


> PutDatabaseRecord Postgres Upsert On Conflict keys not quoted
> -------------------------------------------------------------
>
>                 Key: NIFI-8043
>                 URL: https://issues.apache.org/jira/browse/NIFI-8043
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Daniel Cheung
>            Assignee: Matt Burgess
>            Priority: Major
>             Fix For: 1.13.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> h2. First attempt with camel case (fails when translate field name is true or false)
> Given that "Quote Column Identifiers" is enabled, one would expect the column names inside the conflict clause be quoted as well. However, they didn't seem to have been quoted, because my table's column names contain upper and lowercases and the flowfile is routed to the failure relationship of the PutDatabaseRecord processor with the DB error: {{ERROR: column "camelcase" does not exist}}.
> Whether setting "Update Keys" or not did not affect the outcome. If I understand, "Update Keys" would also affect the conflict clause, but it's also not quoted, and does not accept a string with manually quoted column names.
> SQL in question found in the DB error in the log, simplified from what I saw.
> {{INSERT INTO "public"."my_table"("camelCase", "txt")}}
>  {{VALUES ("test", "test")}}
>  {{ON CONFLICT (CAMELCASE)}}
>  {{DO UPDATE SET ("camelCase", "txt") = (}}
>  {{    EXCLUDED."camelCase",}}
>  {{    EXCLUDED."txt"}}
>  {{)}}
> h2. Second attempt with snake case (fails when translate field name is true)
> I changed my column names to {{_snake_case, txt}} and try upserting again and it still failed with this SQL in nifi-app.log:
> {{INSERT INTO "public"."my_table"("_snake_case", "txt")}}
>  {{VALUES ("test", "test")}}
>  {{ON CONFLICT (SNAKECASE)}}
>  {{DO UPDATE SET ("}}{{_snake_case}}{{", "txt") = (}}
>  {{    EXCLUDED."}}{{_snake_case}}{{",}}
>  {{    EXCLUDED."txt"}}
>  {{)}}
>  
> h2. Current workaround
> I currently need to *disable translate field name* and set my table to *use snake case names as column names* to be able to use upsert



--
This message was sent by Atlassian Jira
(v8.20.7#820007)