Re: MERGE ... RETURNING

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: MERGE ... RETURNING
Дата
Msg-id 20230706103930.l2ji5fzvmjsrougc@alvherre.pgsql
обсуждение исходный текст
Ответ на Re: MERGE ... RETURNING  (Gurjeet Singh <gurjeet@singh.im>)
Ответы Re: MERGE ... RETURNING  (Gurjeet Singh <gurjeet@singh.im>)
Список 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 по дате отправления:

Предыдущее
От: YANG Xudong
Дата:
Сообщение: Re: [PATCH] Add loongarch native checksum implementation.
Следующее
От: jian he
Дата:
Сообщение: Re: MERGE ... RETURNING