OSDN Git Service

Clean up some inconsistencies in the volatility marking of various I/O
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Jul 2010 20:09:34 +0000 (20:09 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 29 Jul 2010 20:09:34 +0000 (20:09 +0000)
commit33e142ec32e31810e92a61c91f355f38783b0bb9
tree12a046068e9c0cb91446ae9a5b7c2aab6aeb0643
parenta6c243ed9c3b9686e802107d8365ac69a1d62949
Clean up some inconsistencies in the volatility marking of various I/O
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.
src/include/catalog/pg_proc.h