Skip to content

upsert fails to pass onConflict into the on_conflict in postgREST #1227

@sbutlerjr

Description

@sbutlerjr

Describe the bug
When doing an UPSERT and supplying the onConflict vie the SDK, the on_conflict property and value isn't passed through to the REST API endpoint. That causes the request to fail with a 409 status code because the unique constraint is violated.

To Reproduce

Supabase.instance.client
                .from('party')
                .upsert({company_uuid: nMQXF9BL-D, uuid: PAR_642d9e4f-669e-402d-8ccd-75297f8c63a2, is_active: true, enable_sms: false, roles: [3], first_name: TEST, last_name: TEST, email: test.test@test.com, phone: 123-876-5309, agency_uuid: 08efd21a-d25a-4c7f-a7d9-dced19e477f8, uniq: TEST:TEST}, onConflict: 'uniq');

This generates a POST request to:
https://nqnopvehcfcqebspvkba.supabase.co/rest/v1/party?columns="company_uuid","uuid","is_active","enable_sms","roles","first_name","last_name","email","phone","agency_uuid","uniq"

With the correct header: Prefer "resolution=merge-duplicates"
and the correct body:

[{"company_uuid":"nMQXF9BL-D","uuid":"PAR_642d9e4f-669e-402d-8ccd-75297f8c63a2","is_active":true,"enable_sms":false,"roles":[3],"first_name":"TEST","last_name":"TEST","email":"[email protected]","phone":"123-867-5309","agency_uuid":"08efd21a-d25a-4c7f-a7d9-dced19e477f8","uniq":"TEST:TEST"}]

But its missing the value I specified with onConflict: 'uniq'

Expected behavior
According to PostgREST docs it should have added: on_conflict=uniq to the URL.
So the POST REST URL should have been
https://nqnopvehcfcqebspvkba.supabase.co/rest/v1/party?columns="company_uuid","uuid","is_active","enable_sms","roles","first_name","last_name","email","phone","agency_uuid","uniq"&on_conflict=uniq

Version (please complete the following information):
supabase_fluter: 2.10.1
Project is Postgres version:17.6.1.004, PostgREST version 13.0.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions