>
> Hi,
>
> I'm probably doing something wrong here.
>
> My process establishes a connection with a PostgreSQL backen and then
> fork()s (twice, actually). To make things even more complicated (though I
> don't know if it affects things), my connection handle is a global
> variable in a dynamically-loaded shared object.
>
> I tried PQreset()ing the connections after forking and then I'd try a
> begin but I'd get the ff.:
>
> NOTICE: BeginTransactionBlock and not in default state
>
> What does that mean?
>
>
> So, what's the deal with fork()ing and connections?
>
Well, Ive not looked at the code, but I should be right here.
If you fork, you will have two processes pumping data down the same
connection to the database, cos the fork() will simply duplicate the
file descriptor reference, not make you a new connection. If two
forked() processes try and send data or retrieve data at the same
time, everything will break, as the database obviously will not know
what the hell is going on and will get a mangled transmission