• Tom Lane's avatar
    More fixes for lossy-GiST-distance-functions patch. · c5dd8ead
    Tom Lane authored
    Paul Ramsey reported that commit 35fcb1b3
    induced a core dump on commuted ORDER BY expressions, because it was
    assuming that the indexorderby expression could be found verbatim in the
    relevant equivalence class, but it wasn't there.  We really don't need
    anything that complicated anyway; for the data types likely to be used for
    index ORDER BY operators in the foreseeable future, the exprType() of the
    ORDER BY expression will serve fine.  (The case where we'd have to work
    harder is where the ORDER BY expression's result is only binary-compatible
    with the declared input type of the ordering operator; long before worrying
    about that, one would need to get rid of GiST's hard-wired assumption that
    said datatype is float8.)
    
    Aside from fixing that crash and adding a regression test for the case,
    I did some desultory code review:
    
    nodeIndexscan.c was likewise overthinking how hard it ought to work to
    identify the datatype of the ORDER BY expressions.
    
    Add comments explaining how come nodeIndexscan.c can get away with
    simplifying assumptions about NULLS LAST ordering and no backward scan.
    
    Revert no-longer-needed changes of find_ec_member_for_tle(); while the
    new definition was no worse than the old, it wasn't better either, and
    it might cause back-patching pain.
    
    Revert entirely bogus additions to genam.h.
    c5dd8ead
genam.h 7.31 KB