During CREATE INDEX we include all tuples, even if they are already dead
when we build an index.
What purpose does this serve?
A pre-existing transaction can't see the index, so there is no danger
that it can use the index and unknowingly avoid touching a valid row.
(If it *can* see the index, is there some benefit in that behaviour?)
I suggest that we should not include dead rows in an index when it is
created, to increase the speed of index creation in certain cases. This
also simplifies a number of the index build routines, which actually
contain special logic for handling dead rows.
Comments?
Best Regards, Simon Riggs