Bruce Momjian wrote: > Bruce Momjian wrote: > > Martijn van Oosterhout wrote: > > -- Start of PGP signed section. > > > On Mon, Jun 26, 2006 at 07:17:31AM -0400, Bruce Momjian wrote: > > > > Correct! We use the same pointers used by normal UPDATEs, except we set > > > > a bit on the old tuple indicating it is a single-index tuple, and we > > > > don't create index entries for the new tuple. Index scan routines will > > > > need to be taught about the new chains, but because only one tuple in > > > > the chain is visible to a single backend, the callers should not need to > > > > be modified. > > > > > > I suppose we would also change the index_getmulti() function to return > > > a set of ctids plus flags so the caller knows to follow the chains, > > > right? And for bitmap index scans you would only remember the page in > > > the case of such a tuple, since you can't be sure the exact ctid you've > > > got is the one you want. > > > > > > Seems doable. > > > > Yes, it just is an issue of where you want to add the complexity --- > > scan entire page when no free space, or only an UPDATE. > > Oh, and because you want to do this when doing an update via sequential > scan as well as an index scan, I am thinking you might need to do the > per-page method because you might not have even seen the head of the > chain yet. With an index scan, finding the head is easy, but for a > sequential scan, it seems more difficult, and we don't have any free > space in the tail of the chain to maintain a pointer to the head.
Thinking some more, there will need to be a bit to uniquely identify the head of a CITC. With that, you could just scan the page tuples looking for CITC heads, and checking those to see if they are not visible, and re-using them, rather than doing a full page reorganization where all free spaces is collected in the middle of the page. That should limit the overhead of reuse. -- Bruce Momjian [EMAIL PROTECTED] EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend