| From: | Hannu Krosing <hannu(at)tm(dot)ee> |
|---|---|
| To: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | UNIQUE INDEX unaware of transactions |
| Date: | 2001-06-15 13:48:31 |
| Message-ID: | 3B2A122F.2D027253@tm.ee |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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()
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2001-06-15 13:56:45 | Re: [PATCH] indexability of << operator for inet/cidr |
| Previous Message | Dip | 2001-06-15 13:46:22 | Postgres Internals |