At 11:16 PM 25-02-2001 -0500, Tom Lane wrote:
>
>Right. Only the first row is locked, but that doesn't help any. "order
>by random" sounds like it might be a good answer, if there aren't many
>rows that need to be sorted.
Yep. I'll just see what happens in the testing stages.
>> What would happen if I rewrite that query to:
>
>> update todo set pid = $mypid where exists ( select task id from todo where
>> pid = 0 for update limit 1);
>
>Right now you get
>
>ERROR: SELECT FOR UPDATE is not allowed in subselects
>
>This is something that could be fixed if FOR UPDATE were a plan node
>instead of a function done at the executor top level.
OK. Sounds like it won't be worth the trouble to do, plus deadlocks would
be real fun ;).
Cheerio,
Link.