• Heikki Linnakangas's avatar
    Compress GIN posting lists, for smaller index size. · 36a35c55
    Heikki Linnakangas authored
    GIN posting lists are now encoded using varbyte-encoding, which allows them
    to fit in much smaller space than the straight ItemPointer array format used
    before. The new encoding is used for both the lists stored in-line in entry
    tree items, and in posting tree leaf pages.
    
    To maintain backwards-compatibility and keep pg_upgrade working, the code
    can still read old-style pages and tuples. Posting tree leaf pages in the
    new format are flagged with GIN_COMPRESSED flag, to distinguish old and new
    format pages. Likewise, entry tree tuples in the new format have a
    GIN_ITUP_COMPRESSED flag set in a bit that was previously unused.
    
    This patch bumps GIN_CURRENT_VERSION from 1 to 2. New indexes created with
    version 9.4 will therefore have version number 2 in the metapage, while old
    pg_upgraded indexes will have version 1. The code treats them the same, but
    it might be come handy in the future, if we want to drop support for the
    uncompressed format.
    
    Alexander Korotkov and me. Reviewed by Tomas Vondra and Amit Langote.
    36a35c55
gininsert.c 14.5 KB