• Tom Lane's avatar
    Get rid of bogus dependency on typcategory in to_json() and friends. · 0ca6bda8
    Tom Lane authored
    These functions were relying on typcategory to identify arrays and
    composites, which is not reliable and not the normal way to do it.
    Using typcategory to identify boolean, numeric types, and json itself is
    also pretty questionable, though the code in those cases didn't seem to be
    at risk of anything worse than wrong output.  Instead, use the standard
    lsyscache functions to identify arrays and composites, and rely on a direct
    check of the type OID for the other cases.
    
    In HEAD, also be sure to look through domains so that a domain is treated
    the same as its base type for conversions to JSON.  However, this is a
    small behavioral change; given the lack of field complaints, we won't
    back-patch it.
    
    In passing, refactor so that there's only one copy of the code that decides
    which conversion strategy to apply, not multiple copies that could (and
    have) gotten out of sync.
    0ca6bda8
json.c 57.5 KB