• Tom Lane's avatar
    Replace the hard-wired type knowledge in TypeCategory() and IsPreferredType() · bac3e836
    Tom Lane authored
    with system catalog lookups, as was foreseen to be necessary almost since
    their creation.  Instead put the information into two new pg_type columns,
    typcategory and typispreferred.  Add support for setting these when
    creating a user-defined base type.
    
    The category column is just a "char" (i.e. a poor man's enum), allowing
    a crude form of user extensibility of the category list: just use an
    otherwise-unused character.  This seems sufficient for foreseen uses,
    but we could upgrade to having an actual category catalog someday, if
    there proves to be a huge demand for custom type categories.
    
    In this patch I have attempted to hew exactly to the behavior of the
    previous hardwired logic, except for introducing new type categories for
    arrays, composites, and enums.  In particular the default preferred state
    for user-defined types remains TRUE.  That seems worth revisiting, but it
    should be done as a separate patch from introducing the infrastructure.
    Likewise, any adjustment of the standard set of categories should be done
    separately.
    bac3e836
catversion.h 2.58 KB