Lost update in an ordered batch, but only with index scan
| От | Bernice Southey |
|---|---|
| Тема | Lost update in an ordered batch, but only with index scan |
| Дата | |
| Msg-id | CAEDh4nyX1HQ=kpbMn4yi=59p6Qga=DmmkCov5UBphZOwQHZp3Q@mail.gmail.com обсуждение исходный текст |
| Ответы |
Re: Lost update in an ordered batch, but only with index scan
|
| Список | pgsql-bugs |
Hi, PostgreSQL 18.1 (Ubuntu 18.1-1.pgdg24.04+2) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, 64-bit I've been following the recommendation of ordering batch updates to avoid deadlocks. I just added a new case, and it consistently loses updates in my tests. Here's a simplified version. --setup create table t(id int primary key, balance int default 0); insert into t(id) select i from generate_series(1, 10000) i; analyze t; --session 1 begin; with l as (select id from t where id in (1, 2) order by id for update) update t set balance = balance + 1 from l where t.id = l.id; UPDATE 2 --session 2 with l as (select id from t where id in (1, 2) order by id for update) update t set balance = balance + 1 from l where t.id = l.id; UPDATE 1 (after committing session 1) If I only have a few rows in the table, it does a seq scan, and then both rows update in session 2. Apologies if I'm just doing something wrong and this isn't a bug. Thanks, Bernice
В списке pgsql-bugs по дате отправления: