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
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster