From: Bruce Momjian <pgman@candle.pha.pa.us>
To: Lee Kindness <lkindness@csl.co.uk>
Cc: Philip Yarra <philip@utiba.com>
Cc: Demetres Pantermalis <dpant@intracom.gr>
Cc: pgsql-interfaces@postgresql.org
Subject: Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)...
Date: Mon, 15 Dec 2003 20:20:09 -0500 (EST)
Message-ID: <200312160120.hBG1K9P18068@candle.pha.pa.us> (raw)
In-Reply-To: <16336.19895.354907.412172@kelvin.csl.co.uk>
Lee Kindness wrote:
> Philip Yarra writes:
> > Unlike the libpq C interface, there is no "connection" variable maintained in
> > ECPG... instead, ECPG internally maintains a global list of open connections.
> > When a client application issues an EXEC SQL, a connection is retrieved from
> > the list, and the SQL statement is executed on that connection. The first
> > connection in the list is the "default" connection, so if you don't specify a
> > named connection using "AT conn_name" ECPG grabs the first connection in the
> > list.
> >
> > I'm pretty sure what happens when you issue EXEC SQL SET CONNECTION is that it
> > sets the the default connection, so each of your threads would simply have
> > shuffled the default connection. Then when each thread attempts to EXEC SQL
> > they grab the same connection... whichever connection was made the default by
> > the last thread to issue EXEC SQL SET CONNECTION.
> >
> > I believe this behaviour is consistent with other DBMS implementations of
> > embedded SQL, but I'm shooting from the hip.
>
> Not sure on the consistency, that's one thing ESQL/C rarely is!
>
> Anyway you're right regarding the SET CONNECTION behaviour. However
> it'd be fairly simple to change things such that each thread keeps
> track of its "current" connection (set by connecting and SET
> CONNECTION) by using thread local storage.
>
> It'd be a definite improvement over having to specify the connection
> on each call!
>
> I'll probably do this at some point, but since i'm off to India on
> Monday for the rest of December it'll not be till the New Year at the
> earliest!
Added to TODO and documented.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: pgman@candle.pha.pa.us, lkindness@csl.co.uk, philip@utiba.com, dpant@intracom.gr
Subject: Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)...
In-Reply-To: <200312160120.hBG1K9P18068@candle.pha.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox