Re: pg_transaction_status() unreliable?!
От | Bill Moran |
---|---|
Тема | Re: pg_transaction_status() unreliable?! |
Дата | |
Msg-id | 20090504153421.2e940587.wmoran@potentialtech.com обсуждение исходный текст |
Ответ на | Re: pg_transaction_status() unreliable?! (ljb <ljb1813@pobox.com>) |
Список | pgsql-php |
In response to ljb <ljb1813@pobox.com>: > wmoran@potentialtech.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/
В списке pgsql-php по дате отправления: