I encountered a problem while implementing new CREATE
CONVERSION. Since converion procs are dynamically invoked while doing
an encoding conversion, it might fail for some reasons:
(1) stale pg_conversion entry. If someone re-register that proc, the oid might be changed and the reference from
pg_conversionto pg_proc becomes stale.
(2) buggy conversion proc is defined by a user
(3) schema search path changed. Since conversion is schema aware, if someone sets a wrong schema path, the conversion
procmight not be found anymore. This is actually not a problem right now, since in this case a conversion search
wouldbe performed on pg_catalog name space which should always be exist. However I am a little bit worried about
this.
Problem is, in any case mentioned above, an ERROR is raised and
backend tries to send an error message which again raise an ERROR. As
a result, backend goes into an infinite loop.
I have to do some syscache searches aginst pg_proc before calling
conversion proc using fmgr, since there seems no API for checking that
conversion proc surely exists without throwing an ERROR. This is ugly
and is not ideal IMO.
Any idea?
--
Tatsuo Ishii