Re: How to handle simultaneous FOR-IN UPDATE-RETURNING loops?

From: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to handle simultaneous FOR-IN UPDATE-RETURNING loops?
Date: 2017-07-10 19:22:16
Message-ID: CAADeyWi5JJN8TgNajx5KfP0ajynSbsKTmfva4SvSLp621Kf1VQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I have tried:

FOR _gid, _loser, _winner IN
UPDATE words_games
SET finished = CURRENT_TIMESTAMP
WHERE finished IS NULL
AND played1 IS NOT NULL
AND played2 IS NOT NULL
AND (played1 < CURRENT_TIMESTAMP - INTERVAL '24 hours'
OR played2 < CURRENT_TIMESTAMP - INTERVAL '24 hours')
RETURNING
gid,
CASE WHEN played1 < played2 THEN player1 ELSE player2 END,
CASE WHEN played1 < played2 THEN player2 ELSE player1 END
FOR UPDATE SKIP LOCKED
LOOP
...
END LOOP;

but this fails with:

ERROR: syntax error at or near "FOR"

I have also described my problem at SO:

https://stackoverflow.com/questions/45015368/how-to-handle-simultaneous-for-in-update-returning-loops

Thank you
Alex

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message rihad 2017-07-10 19:24:20 Re: Changing collate & ctype for an existing database
Previous Message Thomas Munro 2017-07-10 19:12:54 Re: Concurrency and UPDATE [...] FROM