Re: EXEC_BACKEND - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: EXEC_BACKEND
Date
Msg-id 200809232035.m8NKZin09243@momjian.us
Whole thread Raw
In response to Re: EXEC_BACKEND  (Simon Riggs <simon@2ndQuadrant.com>)
Responses Re: EXEC_BACKEND  (Magnus Hagander <magnus@hagander.net>)
Re: EXEC_BACKEND  (Simon Riggs <simon@2ndQuadrant.com>)
List pgsql-hackers
Simon Riggs wrote:
>
> On Tue, 2008-09-16 at 15:53 -0400, Tom Lane wrote:
> > Simon Riggs <simon@2ndQuadrant.com> writes:
> > > We keep talking about EXEC_BACKEND mode, though until recently I had
> > > misunderstood what that meant. I also realised that I have more than
> > > once neglected to take it into account when writing a patch - one recent
> > > patch failed to do this.
> >
> > > I can't find anything coherent in docs/readme/comments to explain why it
> > > exists and what its implications are.
> >
> > It exists because Windows doesn't have fork(), only the equivalent of
> > fork-and-exec.  Which means that no state variables will be inherited
> > from the postmaster by its child processes, and any state that needs to
> > be carried across has to be handled explicitly.  You can define
> > EXEC_BACKEND in a non-Windows build, for the purpose of testing code
> > to see if it works in that environment.
>
> OK, if its that simple then I see why its not documented. Thanks. I
> thought there might be more to it than that.

I added a little documentation at the top of
postmaster.c::backend_forkexec().


--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.564
diff -c -c -r1.564 postmaster.c
*** src/backend/postmaster/postmaster.c    23 Sep 2008 09:20:36 -0000    1.564
--- src/backend/postmaster/postmaster.c    23 Sep 2008 20:33:14 -0000
***************
*** 3286,3291 ****
--- 3286,3295 ----
  /*
   * backend_forkexec -- fork/exec off a backend process
   *
+  * Some operating systems (WIN32) don't have fork() so we have to simulate
+  * it by storing parameters that need to be passed to the child and
+  * then create a new child process.
+  *
   * returns the pid of the fork/exec'd process, or -1 on failure
   */
  static pid_t

pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: PostgreSQL future ideas
Next
From: Magnus Hagander
Date:
Subject: Re: EXEC_BACKEND