• Tom Lane's avatar
    Fix typcache's failure to treat ranges as container types. · 36ea99c8
    Tom Lane authored
    Like the similar logic for arrays and records, it's necessary to examine
    the range's subtype to decide whether the range type can support hashing.
    We can omit checking the subtype for btree-defined operations, though,
    since range subtypes are required to have those operations.  (Possibly
    that simplification for btree cases led us to overlook that it does
    not apply for hash cases.)
    
    This is only an issue if the subtype lacks hash support, which is not
    true of any built-in range type, but it's easy to demonstrate a problem
    with a range type over, eg, money: you can get a "could not identify
    a hash function" failure when the planner is misled into thinking that
    hash join or aggregation would work.
    
    This was born broken, so back-patch to all supported branches.
    36ea99c8
typcache.c 74.6 KB