Re: MERGE ... RETURNING - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: MERGE ... RETURNING
Date
Msg-id 20230706103930.l2ji5fzvmjsrougc@alvherre.pgsql
Whole thread Raw
In response to Re: MERGE ... RETURNING  (Gurjeet Singh <gurjeet@singh.im>)
Responses Re: MERGE ... RETURNING
List pgsql-hackers
On 2023-Jul-05, Gurjeet Singh wrote:

> +BEGIN;
> +COPY (
> +    MERGE INTO sq_target t
> +    USING v
> +    ON tid = sid
> +    WHEN MATCHED AND tid > 2 THEN
> +        UPDATE SET balance = t.balance + delta
> +    WHEN NOT MATCHED THEN
> +        INSERT (balance, tid) VALUES (balance + delta, sid)
> +    WHEN MATCHED AND tid < 2 THEN
> +        DELETE
> +    RETURNING pg_merge_action(), t.*
> +) TO stdout;
> +DELETE  1   100
> +ROLLBACK;
> 
> I expected the .out file to have captured the stdout. I'm gradually,
> and gladly, re-learning bits of the test infrastructure.
> 
> The DELETE command tag in the output does not feel appropriate for a
> COPY command that's using MERGE as the source of the data.

You misread this one :-)  The COPY output is there, the tag is not.  So
DELETE is the value from pg_merge_action(), and "1 100" correspond to
the columns in the the sq_target row that was deleted.  The command tag
is presumably MERGE 1.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/



pgsql-hackers by date:

Previous
From: YANG Xudong
Date:
Subject: Re: [PATCH] Add loongarch native checksum implementation.
Next
From: jian he
Date:
Subject: Re: MERGE ... RETURNING