On Wed, Jun 8, 2016 at 2:49 PM, Robert Haas <robertmh...@gmail.com> wrote:
> Do you have a test case that demonstrates a problem, or an explanation > of why you think there is one? With old_snapshot_threshold = '1min' -- connection 1 drop table if exists t1; create table t1 (c1 int not null); insert into t1 select generate_series(1, 1000000); begin transaction isolation level repeatable read; select 1; -- connection 2 insert into t2 values (1); delete from t1 where c1 between 200000 and 299999; delete from t1 where c1 = 1000000; vacuum analyze verbose t1; select pg_sleep_for('2min'); vacuum analyze verbose t1; -- repeat if needed until dead rows vacuumed -- connection 1 select c1 from t1 where c1 = 100; select c1 from t1 where c1 = 250000; The problem occurs when an index is built while an old snapshot exists which can't see the effects of early pruning/vacuuming. The fix prevents use of such an index until all snapshots early enough to have a problem have been released. -- Kevin Grittner EDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers