Dear Tom,
Thanks for the explanation, it's more than enough. Some more questions if
you don't mind:
----- Original Message -----
From: "Tom Lane" <tgl@sss.pgh.pa.us>
Sent: Thursday, November 04, 2004 6:46 PM
> SZŰCS Gábor <surrano@mailbox.hu> writes:
> > The php connects to the database and updates retval where id=seq.
> > It seems to be OK, but the function returns the value of
php_retval.retval
> > _before_ the call.
>
> Yes, because your transaction is working with a database snapshot that
> predates the other transaction run by the separate PHP connection.
Yes, but the snapshot is not constant during a transaction, right? (as my
example showed this clearly) ...
> Prior to PG 8.0, new snapshots are not taken between commands of a
function,
> even in READ COMMITTED mode. You could get the behavior you want by
> issuing separate interactive commands instead of wrapping the sequence
> in a function.
... So if I understood you correctly, it's the function call that sees the
old snapshot, and the transaction is more flexible in this issue. right?
> > I thought it's something about "35.2 Visibility of Data Changes", but
that's
> > only for triggers, isn't it?
>
> Nope.
I felt like it's not only for triggers but interpreted the doc as it'd be
only for triggers... Having a closer look, discovered that there is another
section with this title: "41.4 Visibility of Data Changes" ;)
> This has been a sore spot for a long time, but we didn't get consensus
> about changing it till recently ...
I assume there is no point in begging for a backport... ;)
Thanks again,
G.
%----------------------- cut here -----------------------%
\end