From: | Bill Moran <wmoran(at)potentialtech(dot)com> |
---|---|
To: | ljb <ljb1813(at)pobox(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_transaction_status() unreliable?! |
Date: | 2009-05-04 19:34:21 |
Message-ID: | 20090504153421.2e940587.wmoran@potentialtech.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-php |
In response to ljb <ljb1813(at)pobox(dot)com>:
> wmoran(at)potentialtech(dot)com wrote:
> >
> > I'm having some ugly fun here. It doesn't seem as if
> > pg_transaction_status() is reliable in the least.
> >
> > For example, I'm doing the equivalent of the following:
> >
> > pg_send_query_params($conn, 'BEGIN', array());
> > pg_get_result($conn);
> > ... some other queries, each using pg_send_query_params() and
> > pg_get_result() ...
> > pg_send_query_params($conn, 'COMMIT', array());
> > pg_get_result($conn);
> > echo pg_transaction_status($conn);
> >
> > Now, amazingly enough, pg_transaction_status() returns
> > PGSQL_TRANSACTION_ACTIVE after the commit. This makes no sense to
> > me at all ... it should return PGSQL_TRANSACTION_IDLE, since the
> > connection is no longer in a transaction.
> >
> > Is anyone else seeing this? I have assertions failing all over the
> > place because my code thinks that transactions have been left
> > uncommitted.
>
> One needs to loop on pg_get_result() until it returns False. Are you doing
> this?
No. There's no documented reason that I can see to do so ;)
> I think perhaps you are not. You can sometimes sort of get away
> with a single call, but it isn't a good idea to rely on it.
Doesn't make much sense to me. I know there's only a single query,
and thus I know there's only a single result.
> I duplicated your result by doing the COMMIT but only doing
> pg_get_result once; then pg_transaction_status gave me the odd
> PGSQL_TRANSACTION_ACTIVE. But if I loop on pg_get_result (it returns a
> result handle, then false the next time), I get the expected IDLE status.
It appears as if this has fixed the problem. It's random enough that
I can't be sure yet, though. In any event, I owe you a beer at some
point. Thanks!
--
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/
From | Date | Subject | |
---|---|---|---|
Next Message | Bill Moran | 2009-05-04 20:57:04 | Re: pg_transaction_status() unreliable?! |
Previous Message | ljb | 2009-05-03 01:59:54 | Re: pg_transaction_status() unreliable?! |