Hi All,
I posted this subject on General discussion-list but got no takers. I'll
restate my query and be as brief as I possible.
"What are the issues/dangers involved in putting an external
process-execution call in instance of main postgres-backend thread of
execution?"
The operating context will be a Linux/UNIX OS.
Here is a typical SQL statement I'm trying to field: "SELECT * FROM f(a)."
Where "f" is a stored-procedure stub to a shared library C function,
"a" is a string-parameter.
"f" will need to - under the proper circumstances - call an external process
"p", parse the process-output, and return a set of structured records.
"p" may run for a very long time; may cause SIG_*; may leave heap in an
inconsistent state; may spawn child-processes.
I've already written a number of stored-procedures backed by shared
libraries implemented in C, including set-returning functions, and I know
the basics of user-types and arrays (including some custom array
extensions). I've written UNIX shell processes in C while in school, so I
know a bit about child-process control and signal-handling.
It seems that "fork" is clearly out; I'm assuming process execution
environment MUST be guaranteed consistent on re-entrance into postgres.
Using "exec" is possibly worse with a full image-overlay destroying any hope
of reconstructing pre-spawn environment. What are my options here?
Thanks for any input,
Carl <|};-)>