Language-specific initialization actions
In ProcedureCreate() (backend/catalog/pg_proc.c) there are special cases
for the built-in languages that check whether the to-be-created function
has a valid body. ISTM that we could extend that for user-defined
functions, as follows.
When creating a language, the user can optionally register a "check"
function for the language, whose responsibility is to check the supplied
function body for correctness and return a Boolean result. This function
would be executed at the time the function is created.
For example, for PL/Perl, the check function could execute the equivalent
of 'perl -c', or if we have a Java language in the future it could check
whether certain classes are loadable.
Comments?
--
Peter Eisentraut peter_e@gmx.net
Peter Eisentraut <peter_e@gmx.net> writes:
In ProcedureCreate() (backend/catalog/pg_proc.c) there are special cases
for the built-in languages that check whether the to-be-created function
has a valid body. ISTM that we could extend that for user-defined
functions, as follows.
When creating a language, the user can optionally register a "check"
function for the language, whose responsibility is to check the supplied
function body for correctness and return a Boolean result. This function
would be executed at the time the function is created.
Are you planning to also move the existing special cases out to
functions called through this same interface? That would make pg_proc.c
a lot cleaner, I think.
I don't see any value in returning a boolean; might as well let the
thing just throw an elog --- with, one hopes, an error message somewhat
more specific than "bad function body".
regards, tom lane