On Fri, 2009-12-04 at 07:12 -0500, Bruce Momjian wrote:
> I think the hint bit has to be added to the item pointer, by using the
> offset bits that are already zero, according to Greg Stark. That
> solution leads to easy programming, no expanding hint bit array, and it
> is backward compatible so doesn't cause problems for pg_migrator.
Seems like a reasonable way forward.
As I pointed out here
http://archives.postgresql.org/pgsql-hackers/2009-12/msg00056.php
we only need to use 3 bits not 4, but it does limit tuple length to 4096
for all block sizes. (Two different options there for doing that).
An added advantage of this approach is that the cachelines for the item
pointer array will already be in CPU cache, so there is no additional
access time when we set the hint bits when they are moved to their new
position.
I should also point out that removing 4 bits from the tuple header would
allow us to get rid of t_infomask2, reducing tuple length by a further 2
bytes.
-- Simon Riggs www.2ndQuadrant.com