HeapTupleSatisfiesVacuum() needs to be more careful about the difference between INSERT_IN_PROGRESS and DELETE_IN_PROGRESS for tuples inserted and then deleted by a concurrent transaction. Example of bug: regression=# create table foo (f1 int); CREATE TABLE regression=# begin; BEGIN regression=# insert into foo values(1); INSERT 195531 1 regression=# delete from foo; DELETE 1 regression=# insert into foo values(1); INSERT 195532 1 regression=# create unique index fooi on foo(f1); ERROR:  could not create unique index DETAIL:  Table contains duplicated values.
HeapTupleSatisfiesVacuum() needs to be more careful about the
difference between INSERT_IN_PROGRESS and DELETE_IN_PROGRESS for
tuples inserted and then deleted by a concurrent transaction.
Example of bug:
regression=# create table foo (f1 int);
CREATE TABLE
regression=# begin;
BEGIN
regression=# insert into foo values(1);
INSERT 195531 1
regression=# delete from foo;
DELETE 1
regression=# insert into foo values(1);
INSERT 195532 1
regression=# create unique index fooi on foo(f1);
ERROR:  could not create unique index
DETAIL:  Table contains duplicated values.

zeroae/postgres-xl,tangp3/gpdb,postmind-net/postgres-xl,kmjungersen/PostgresXL,Chibin/gpdb,xuegang/gpdb,janebeckman/gpdb,edespino/gpdb,lpetrov-pivotal/gpdb,yuanzhao/gpdb,50wu/gpdb,techdragon/Postgres-XL,Chibin/gpdb,randomtask1155/gpdb,rvs/gpdb,tpostgres-projects/tPostgres,chrishajas/gpdb,rubikloud/gpdb,janebeckman/gpdb,rvs/gpdb,0x0FFF/gpdb,Quikling/gpdb,Chibin/gpdb,rvs/gpdb,postmind-net/postgres-xl,tpostgres-projects/tPostgres,randomtask1155/gpdb,royc1/gpdb,snaga/postgres-xl,Quikling/gpdb,rvs/gpdb,janebeckman/gpdb,postmind-net/postgres-xl,ashwinstar/gpdb,foyzur/gpdb,xuegang/gpdb,royc1/gpdb,lisakowen/gpdb,ovr/postgres-xl,lisakowen/gpdb,xinzweb/gpdb,xuegang/gpdb,edespino/gpdb,randomtask1155/gpdb,royc1/gpdb,techdragon/Postgres-XL,yazun/postgres-xl,royc1/gpdb,xinzweb/gpdb,janebeckman/gpdb,adam8157/gpdb,pavanvd/postgres-xl,Postgres-XL/Postgres-XL,atris/gpdb,xuegang/gpdb,adam8157/gpdb,kaknikhil/gpdb,Chibin/gpdb,greenplum-db/gpdb,zaksoup/gpdb,Chibin/gpdb,50wu/gpdb,chrishajas/gpdb,adam8157/gpdb,ahachete/gpdb,kaknikhil/gpdb,tangp3/gpdb,yuanzhao/gpdb,randomtask1155/gpdb,cjcjameson/gpdb,yuanzhao/gpdb,techdragon/Postgres-XL,lpetrov-pivotal/gpdb,greenplum-db/gpdb,50wu/gpdb,pavanvd/postgres-xl,xuegang/gpdb,jmcatamney/gpdb,zeroae/postgres-xl,foyzur/gpdb,randomtask1155/gpdb,CraigHarris/gpdb,tpostgres-projects/tPostgres,kmjungersen/PostgresXL,50wu/gpdb,yuanzhao/gpdb,lpetrov-pivotal/gpdb,Quikling/gpdb,jmcatamney/gpdb,atris/gpdb,snaga/postgres-xl,foyzur/gpdb,tangp3/gpdb,yazun/postgres-xl,chrishajas/gpdb,CraigHarris/gpdb,pavanvd/postgres-xl,yuanzhao/gpdb,adam8157/gpdb,edespino/gpdb,janebeckman/gpdb,edespino/gpdb,CraigHarris/gpdb,arcivanov/postgres-xl,kaknikhil/gpdb,lintzc/gpdb,Chibin/gpdb,lpetrov-pivotal/gpdb,atris/gpdb,zaksoup/gpdb,tangp3/gpdb,chrishajas/gpdb,Postgres-XL/Postgres-XL,CraigHarris/gpdb,ovr/postgres-xl,kaknikhil/gpdb,rvs/gpdb,rubikloud/gpdb,greenplum-db/gpdb,xinzweb/gpdb,kaknikhil/gpdb,oberstet/postgres-xl,kmjungersen/PostgresXL,foyzur/gpdb,lintzc/gpdb,ashwinstar/gpdb,royc1/gpdb,Quikling/gpdb,edespino/gpdb,cjcjameson/gpdb,greenplum-db/gpdb,kaknikhil/gpdb,atris/gpdb,royc1/gpdb,lintzc/gpdb,arcivanov/postgres-xl,edespino/gpdb,tpostgres-projects/tPostgres,ashwinstar/gpdb,ovr/postgres-xl,xuegang/gpdb,royc1/gpdb,jmcatamney/gpdb,zeroae/postgres-xl,xinzweb/gpdb,edespino/gpdb,jmcatamney/gpdb,oberstet/postgres-xl,CraigHarris/gpdb,lintzc/gpdb,0x0FFF/gpdb,ashwinstar/gpdb,atris/gpdb,pavanvd/postgres-xl,postmind-net/postgres-xl,kaknikhil/gpdb,randomtask1155/gpdb,ahachete/gpdb,yazun/postgres-xl,Chibin/gpdb,Chibin/gpdb,zaksoup/gpdb,CraigHarris/gpdb,greenplum-db/gpdb,jmcatamney/gpdb,lisakowen/gpdb,edespino/gpdb,lisakowen/gpdb,yuanzhao/gpdb,atris/gpdb,tangp3/gpdb,lintzc/gpdb,zaksoup/gpdb,arcivanov/postgres-xl,kaknikhil/gpdb,janebeckman/gpdb,50wu/gpdb,zaksoup/gpdb,ashwinstar/gpdb,adam8157/gpdb,Quikling/gpdb,kaknikhil/gpdb,tangp3/gpdb,oberstet/postgres-xl,oberstet/postgres-xl,jmcatamney/gpdb,lisakowen/gpdb,ahachete/gpdb,edespino/gpdb,janebeckman/gpdb,ashwinstar/gpdb,rvs/gpdb,ahachete/gpdb,janebeckman/gpdb,foyzur/gpdb,Quikling/gpdb,oberstet/postgres-xl,0x0FFF/gpdb,rvs/gpdb,rubikloud/gpdb,0x0FFF/gpdb,snaga/postgres-xl,rubikloud/gpdb,ahachete/gpdb,lisakowen/gpdb,arcivanov/postgres-xl,royc1/gpdb,lpetrov-pivotal/gpdb,Quikling/gpdb,0x0FFF/gpdb,rvs/gpdb,cjcjameson/gpdb,kmjungersen/PostgresXL,adam8157/gpdb,ovr/postgres-xl,Postgres-XL/Postgres-XL,rubikloud/gpdb,randomtask1155/gpdb,Postgres-XL/Postgres-XL,CraigHarris/gpdb,kmjungersen/PostgresXL,snaga/postgres-xl,jmcatamney/gpdb,chrishajas/gpdb,xinzweb/gpdb,chrishajas/gpdb,ahachete/gpdb,yuanzhao/gpdb,ahachete/gpdb,50wu/gpdb,0x0FFF/gpdb,lisakowen/gpdb,xuegang/gpdb,yuanzhao/gpdb,foyzur/gpdb,lintzc/gpdb,tangp3/gpdb,rubikloud/gpdb,techdragon/Postgres-XL,snaga/postgres-xl,greenplum-db/gpdb,lintzc/gpdb,ashwinstar/gpdb,lpetrov-pivotal/gpdb,ahachete/gpdb,kaknikhil/gpdb,Quikling/gpdb,rubikloud/gpdb,chrishajas/gpdb,Quikling/gpdb,0x0FFF/gpdb,ashwinstar/gpdb,lintzc/gpdb,postmind-net/postgres-xl,cjcjameson/gpdb,rvs/gpdb,arcivanov/postgres-xl,cjcjameson/gpdb,0x0FFF/gpdb,zaksoup/gpdb,zaksoup/gpdb,techdragon/Postgres-XL,jmcatamney/gpdb,cjcjameson/gpdb,cjcjameson/gpdb,Postgres-XL/Postgres-XL,cjcjameson/gpdb,greenplum-db/gpdb,50wu/gpdb,tpostgres-projects/tPostgres,xinzweb/gpdb,yazun/postgres-xl,rvs/gpdb,cjcjameson/gpdb,CraigHarris/gpdb,lisakowen/gpdb,arcivanov/postgres-xl,randomtask1155/gpdb,greenplum-db/gpdb,xuegang/gpdb,yuanzhao/gpdb,rubikloud/gpdb,Chibin/gpdb,adam8157/gpdb,CraigHarris/gpdb,cjcjameson/gpdb,xuegang/gpdb,zeroae/postgres-xl,yazun/postgres-xl,janebeckman/gpdb,xinzweb/gpdb,atris/gpdb,foyzur/gpdb,edespino/gpdb,chrishajas/gpdb,atris/gpdb,lpetrov-pivotal/gpdb,pavanvd/postgres-xl,lintzc/gpdb,Chibin/gpdb,tangp3/gpdb,adam8157/gpdb,foyzur/gpdb,ovr/postgres-xl,50wu/gpdb,zeroae/postgres-xl,yuanzhao/gpdb,lpetrov-pivotal/gpdb,Quikling/gpdb,janebeckman/gpdb,xinzweb/gpdb,zaksoup/gpdb