• Tom Lane's avatar
    Fix comparison of similarity to threshold in GIST trigram searches. · 9c852566
    Tom Lane authored
    There was some very strange code here, dating to commit b525bf77, that
    purported to work around an ancient gcc bug by forcing a float4 comparison
    to be done as int instead.  Commit 5871b884 broke that when it changed
    one side of the comparison to "double" but left the comparison code alone.
    Commit f576b17c doubled down on the weirdness by introducing a "volatile"
    marker, which had nothing to do with the actual problem.
    
    Guess that the gcc bug, even if it's still present in the wild, was
    triggered by comparison of float4's and can be avoided if we store the
    result of cnt_sml() into a double before comparing to the double "nlimit".
    This will at least work correctly on non-broken compilers, and it's way
    more readable.
    
    Per bug #14202 from Greg Navis.  Add a regression test based on his
    example.
    
    Report: <20160620115321.5792.10766@wrigleys.postgresql.org>
    9c852566
pg_trgm.sql 5.48 KB