BUG #4401: concurrent updates to a table blocks one update indefinitely
От | vinayak |
---|---|
Тема | BUG #4401: concurrent updates to a table blocks one update indefinitely |
Дата | |
Msg-id | 200809041824.m84IOiuh080762@wwwmaster.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #4401: concurrent updates to a table blocks one update indefinitely
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 4401 Logged by: vinayak Email address: vinayak@adconion.com PostgreSQL version: 8.3.1 Operating system: CentOS release 5 Description: concurrent updates to a table blocks one update indefinitely Details: There are two tables test_source(id int, name text) test_destination(id int, name text) which are filled with data. Using an update query the names from the destination are updated with new values from the source. A single run of this update works as expected. Concurrent runs cause one to succeed and the other to be blocked indefinitely. While the second update is blocked, postgres appears to be consuming considerable cpu resources. The following script demonstrates the problem encountered. Test script: psql -q -U postgres -c "create table test_destination(id int, name text)"; psql -q -U postgres -c "create table test_source(id int, name text)"; numEntries=10000; psql -U postgres -c "insert into test_source(id, name) select generate_series(1,$numEntries), 'new entry # '||generate_series(1,$numEntries)"; psql -U postgres -c "insert into test_destination(id, name) select generate_series(1,$numEntries), 'old entry # '||generate_series(1,$numEntries)"; echo "Test initialization done" pids="" psql -U postgres -c "update test_destination d set name=s.name from test_source s where d.id=s.id" & pids="$pids $!" psql -U postgres -c "update test_destination d set name=s.name from test_source s where d.id=s.id" & pids="$pids $!" wait $pids echo "Updates completed" psql -q -U postgres -c "drop table test_source"; psql -q -U postgres -c "drop table test_destination";
В списке pgsql-bugs по дате отправления: