Re: atomic multi-threaded upsert - Mailing list pgsql-sql

From Mikhail V. Puzanov
Subject Re: atomic multi-threaded upsert
Date
Msg-id 4CF11EF7.4020605@gmail.com
Whole thread Raw
In response to Re: atomic multi-threaded upsert  (MIkhail Puzanov <misha.puzanov@gmail.com>)
List pgsql-sql
On 25.11.2010 12:51, MIkhail Puzanov wrote:


2010/11/25 Tom Lane <tgl@sss.pgh.pa.us>
"Mikhail V. Puzanov" <misha.puzanov@gmail.com> writes:
>    -- increment and get the counter if exists
>   UPDATE sequences SET counter = counter + 1
>   WHERE section = 'testSection' AND name = 'testKey'
>   RETURNING counter;

Seems that what you have here is a bad manual implementation of a
sequence.  Why don't you use a real sequence object and nextval()?



Well, if I use the real sequence, I'll need unpredictable number of them
and will have to store mapping (section, name)->sequenceName, and
also will have to create those sequences dynamically the similar way.


Finally the problem solved with application level locks (that works for only
one application server, but suits our needs for now).

This also works http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE but we need some more or less cross-DBMS approach.

pgsql-sql by date:

Previous
From: ndias
Date:
Subject: Re: Insert row in 1.10.1 and 1.10.3
Next
From: Jorge Arenas
Date:
Subject: subselect and left join not working?