| От | Hannu Krosing |
|---|---|
| Тема | UNIQUE INDEX unaware of transactions |
| Дата | |
| Msg-id | 3B2A122F.2D027253@tm.ee обсуждение исходный текст |
| Список | pgsql-hackers |
It seems that our current way of enforcing uniqueness knows nothing
about transactions ;(
when you
create table t( i int4 primary key
);"""
and then run the following query
begin; delete from t where i=1; insert into t(i) values(1);
end;
in a loop from two parallel processes in a loop then one of them will
almost instantaneously err out with
ERROR: Cannot insert a duplicate key into unique index t_pkey
I guess this can be classified as a bug, but I'm not sure how easy it
is to fix it.
-------------
Hannu
I tested it with the followiong python script
#!/usr/bin/python
sql_reinsert_item = """\
begin; delete from t where i=1; insert into t(i) values(1);
end;
"""
def main(): import _pg con = _pg.connect('test') for i in range(500): print '%d. update' % (i+1)
con.query(sql_reinsert_item)
if __name__=='__main__': main()
В списке pgsql-hackers по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера