• Tom Lane's avatar
    Allow index AMs to return either HeapTuple or IndexTuple format during IOS. · 9b88f27c
    Tom Lane authored
    Previously, only IndexTuple format was supported for the output data of
    an index-only scan.  This is fine for btree, which is just returning a
    verbatim index tuple anyway.  It's not so fine for SP-GiST, which can
    return reconstructed data that's much larger than a page.
    
    To fix, extend the index AM API so that index-only scan data can be
    returned in either HeapTuple or IndexTuple format.  There's other ways
    we could have done it, but this way avoids an API break for index AMs
    that aren't concerned with the issue, and it costs little except a couple
    more fields in IndexScanDescs.
    
    I changed both GiST and SP-GiST to use the HeapTuple method.  I'm not
    very clear on whether GiST can reconstruct data that's too large for an
    IndexTuple, but that seems possible, and it's not much of a code change to
    fix.
    
    Per a complaint from Vik Fearing.  Reviewed by Jason Li.
    
    Discussion: https://postgr.es/m/49527f79-530d-0bfe-3dad-d183596afa92@2ndquadrant.fr
    9b88f27c
gistget.c 21.5 KB