Tom Lane wrote:
Not necessarily but perhaps the term FENCED is incorrect for the concept that I have in mind.Thomas Hallgren <thomas(at)tada(dot)se> writes:This FENCED/NOT FENCED terminology would be a good way to differentiate between the two approaches. Any chance of that syntax making it into the PostgreSQL grammar, should the need arise?Of what value would it be to have it in the grammar? The behavior would be entirely internal to any particular PL in any case.
All languages that are implemented using a VM could benefit from the same remote UDF protocol. Java, C#, perhaps even Perl or Ruby. The flag that I'd like to have would control 'in-process' versus 'remote'.
I'm not too keen on the term FENCED, since it, in the PL/Java case will lead to poorer isolation. Multiple threads running in the same JVM will be able to share data and a JVM crash will affect all connected sessions.
Then again, perhaps it's a bad idea to have this in the function declaration in the first place. A custom GUC parameter might be a better choice. It will not be possible to have some functions use the in-process approach and others to execute remotely but I doubt that will matter that much.
I'm still eager to hear what it is in the current PL/Java that you consider fundamental unresolvable problems.
Regards, Thomas Hallgren