Vivek Khera wrote:
> On Dec 10, 2007, at 5:04 PM, Colin Wetherbee wrote:
>
>> For what it's worth, the real algorithm would be as follows. I
>> hadn't had enough coffee yet, and I forgot the UPDATE bit.
>>
>> IF (a query matching your old data returns rows) THEN UPDATE with
>> your new data ELSE INSERT your new data
>
> Still exists race condition. Your race comes from testing existence,
> then creating/modifying data afterwards. You need to make the
> test/set atomic else you have race.
I guess when I wrote that the algorithm would have to be implemented in
an atomic manner, it fell on deaf ears.
That said, perhaps implementing a good MERGE would be not such a bad
idea for PostgreSQL 8.4.
Colin