Hacking postgres backend process - Mailing list pgsql-hackers

From Carl E. McMillin
Subject Hacking postgres backend process
Date
Msg-id 000001c42d35$24c19700$6600a8c0@DEVSONY
Whole thread Raw
Responses Re: Hacking postgres backend process  (Alvaro Herrera <alvherre@dcc.uchile.cl>)
List pgsql-hackers
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 <|};-)> 

pgsql-hackers by date:

Previous
From: Christopher Kings-Lynne
Date:
Subject: Re: I need Help
Next
From: Mark Harrison
Date:
Subject: Re: [pgsql-advocacy] What can we learn from MySQL?