• Tom Lane's avatar
    Fix assorted bugs by changing TS_execute's callback API to ternary logic. · 2f2007fb
    Tom Lane authored
    Text search sometimes failed to find valid matches, for instance
    '!crew:A'::tsquery might fail to locate 'crew:1B'::tsvector during
    an index search.  The root of the issue is that TS_execute's callback
    functions were not changed to use ternary (yes/no/maybe) reporting
    when we made the search logic itself do so.  It's somewhat annoying
    to break that API, but on the other hand we now see that any code
    using plain boolean logic is almost certainly broken since the
    addition of phrase search.  There seem to be very few outside callers
    of this code anyway, so we'll just break them intentionally to get
    them to adapt.
    
    This allows removal of tsginidx.c's private re-implementation of
    TS_execute, since that's now entirely duplicative.  It's also no
    longer necessary to avoid use of CALC_NOT in tsgistidx.c, since
    the underlying callbacks can now do something reasonable.
    
    Back-patch into v13.  We can't change this in stable branches,
    but it seems not quite too late to fix it in v13.
    
    Tom Lane and Pavel Borisov
    
    Discussion: https://postgr.es/m/CALT9ZEE-aLotzBg-pOp2GFTesGWVYzXA3=mZKzRDa_OKnLF7Mg@mail.gmail.com
    2f2007fb
tsginidx.c 8.65 KB