• Tom Lane's avatar
    Restructure SPGiST opclass interface API to support whole-index scans. · 03e56f79
    Tom Lane authored
    The original API definition was incapable of supporting whole-index scans
    because there was no way to invoke leaf-value reconstruction without
    checking any qual conditions.  Also, it was inefficient for
    multiple-qual-condition scans because value reconstruction got done over
    again for each qual condition, and because other internal work in the
    consistent functions likewise had to be done for each qual.  To fix these
    issues, pass the whole scankey array to the opclass consistent functions,
    instead of only letting them see one item at a time.  (Essentially, the
    loop over scankey entries is now inside the consistent functions not
    outside them.  This makes the consistent functions a bit more complicated,
    but not unreasonably so.)
    
    In itself this commit does nothing except save a few cycles in
    multiple-qual-condition index scans, since we can't support whole-index
    scans on SPGiST indexes until nulls are included in the index.  However,
    I consider this a must-fix for 9.2 because once we release it will get
    very much harder to change the opclass API definition.
    03e56f79
spgist.sgml 33.2 KB