On Thu, Aug 4, 2016 at 10:58:33PM +0530, Pavan Deolasee wrote: > 2. I also think that most often the tuple that will be updated will have its > t_ctid pointing to itself. This sounds more invasive, but can we somehow
Agreed! I think it has to. Great idea. > utilise the t_ctid field to store the OffsetNumber of the root line pointer? > The root line pointer only exists when the tuple under consideration has > HEAP_ONLY_TUPLE flag set and we know for such tuples, BlockNumber in t_ctid > must be same as current block (unless HEAP_UPDATED is also set and the > updating > transaction eventually aborted). Oh, aborts, so the tuple we are looking at is the head of the chain and points to a tuple that was aborted. So we would still need a page-scan to handle cases where the t_ctid was over-written by an aborted tuple, but as you said it would be rare. So, if the tuple has HEAP_ONLY_TUPLE set, we know the block number ip_blkid equals our block number, so any ip_blkid value that doesn't equal our block number is a special flag that indicates that ip_posid points to the head of our HOT chain. I guess we could just set it to (our block number + 1), with rollover possible and desired. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Ancient Roman grave inscription + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers