Language-specific initialization actions

Started by Peter Eisentrautalmost 24 years ago2 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#1)
Re: Language-specific initialization actions

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