Use a more granular approach to follow update chains
Use a more granular approach to follow update chains

Instead of simply checking the KEYS_UPDATED bit, we need to check
whether each lock held on the future version of the tuple conflicts with
the lock we're trying to acquire.

Per bug report #8434 by Tomonari Katsumata

ovr/postgres-xl,ashwinstar/gpdb,techdragon/Postgres-XL,ashwinstar/gpdb,adam8157/gpdb,pavanvd/postgres-xl,greenplum-db/gpdb,ashwinstar/gpdb,adam8157/gpdb,greenplum-db/gpdb,adam8157/gpdb,oberstet/postgres-xl,ashwinstar/gpdb,50wu/gpdb,greenplum-db/gpdb,zeroae/postgres-xl,zeroae/postgres-xl,oberstet/postgres-xl,Postgres-XL/Postgres-XL,ovr/postgres-xl,adam8157/gpdb,pavanvd/postgres-xl,lisakowen/gpdb,xinzweb/gpdb,lisakowen/gpdb,jmcatamney/gpdb,jmcatamney/gpdb,ovr/postgres-xl,pavanvd/postgres-xl,yazun/postgres-xl,50wu/gpdb,yazun/postgres-xl,lisakowen/gpdb,xinzweb/gpdb,greenplum-db/gpdb,ashwinstar/gpdb,jmcatamney/gpdb,techdragon/Postgres-XL,oberstet/postgres-xl,ashwinstar/gpdb,zeroae/postgres-xl,greenplum-db/gpdb,techdragon/Postgres-XL,pavanvd/postgres-xl,zeroae/postgres-xl,oberstet/postgres-xl,adam8157/gpdb,greenplum-db/gpdb,50wu/gpdb,greenplum-db/gpdb,techdragon/Postgres-XL,ashwinstar/gpdb,lisakowen/gpdb,50wu/gpdb,50wu/gpdb,ovr/postgres-xl,ovr/postgres-xl,xinzweb/gpdb,xinzweb/gpdb,Postgres-XL/Postgres-XL,jmcatamney/gpdb,50wu/gpdb,50wu/gpdb,adam8157/gpdb,jmcatamney/gpdb,jmcatamney/gpdb,xinzweb/gpdb,jmcatamney/gpdb,adam8157/gpdb,jmcatamney/gpdb,lisakowen/gpdb,lisakowen/gpdb,greenplum-db/gpdb,Postgres-XL/Postgres-XL,oberstet/postgres-xl,Postgres-XL/Postgres-XL,yazun/postgres-xl,lisakowen/gpdb,yazun/postgres-xl,pavanvd/postgres-xl,adam8157/gpdb,ashwinstar/gpdb,xinzweb/gpdb,zeroae/postgres-xl,techdragon/Postgres-XL,50wu/gpdb,xinzweb/gpdb,xinzweb/gpdb,yazun/postgres-xl,Postgres-XL/Postgres-XL,lisakowen/gpdb