Tatsuo Ishii <t-ishii@sra.co.jp> writes:
> 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_conversion to
> pg_proc becomes stale.
This could (and should IMHO) be prevented with a dependency.
> (2) buggy conversion proc is defined by a user
This I think we have to be concerned about; there will always be the
possibility of a failure in the conversion proc.
> (3) schema search path changed.
I do not see how that's an issue. The conversion proc is referred to
by OID, no?
> 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.
As long as we can restrict this failure to the case of a buggy
conversion proc, I think the risk can be lived with. Buggy C code
can cause crashes in plenty of ways ;-)
regards, tom lane