Thread

  1. Single pass vacuum - take 2

    Pavan Deolasee <pavan.deolasee@gmail.com> — 2011-08-22T06:22:35Z

    Hi All,
    
    Here is a revised patch based on our earlier discussion. I implemented
    Robert's idea of tracking the vacuum generation number in the line
    pointer itself. For LP_DEAD line pointers, the lp_off/lp_len is unused
    (and always set to 0 for heap tuples). We use those 30 bits to store
    the generation number of the vacuum which would have potentially
    removed the corresponding index pointers, if the vacuum finished
    successfully. The pg_class information is used to know the status of
    the vacuum, whether it failed or succeeded. 30-bit numbers are large
    enough that we can ignore any wrap-around related issues. With this
    change, we don't need any additional header or special space in the
    page which was one of the main objection to the previous version.
    
    Other than this major change, I have added code commentary at relevant
    places and also fixed the item.h comments to reflect the change. I
    think the patch is ready for a serious review now.
    
    Thanks,
    Pavan
    
    -- 
    Pavan Deolasee
    EnterpriseDB     http://www.enterprisedb.com