• Tom Lane's avatar
    Clean up some inconsistencies in the volatility marking of various I/O · aab353a6
    Tom Lane authored
    related functions.  Per today's discussion, we will henceforth assume
    that datatype I/O functions are either stable or immutable, never volatile.
    (This implies in particular that domain CHECK constraint expressions shouldn't
    be volatile, since domain_in executes them.)  In turn, functions that execute
    the I/O functions of arbitrary datatypes should always be labeled stable.
    This affects the labeling of array_to_string, which was unsafely marked
    immutable, and record_in, record_out, record_recv, record_send,
    domain_in, domain_recv, which were over-conservatively marked volatile.
    The array I/O functions were already marked stable, which is correct
    per this policy but would have been wrong if we maintained domain_in
    as volatile.
    
    Back-patch to 9.0, along with an earlier fix to correctly mark cash_in
    and cash_out as stable not immutable (since they depend on lc_monetary).
    
    No catversion bump --- the implications of this are not currently
    severe enough to justify a forced initdb.
    aab353a6
pg_proc.h 409 KB