Re: BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs - Mailing list pgsql-bugs

From Robert Haas
Subject Re: BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs
Date
Msg-id 603c8f070912150858s385dc98aq27f7417b56d4af37@mail.gmail.com
Whole thread Raw
In response to BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs  ("Philip Graham" <philip@lightbox.org>)
Responses Re: BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs  (Philip Graham <philip@lightbox.org>)
List pgsql-bugs
On Mon, Dec 14, 2009 at 11:15 PM, Philip Graham <philip@lightbox.org> wrote:
>
> The following bug has been logged online:
>
> Bug reference: =A0 =A0 =A05244
> Logged by: =A0 =A0 =A0 =A0 =A0Philip Graham
> Email address: =A0 =A0 =A0philip@lightbox.org
> PostgreSQL version: 8.3.8
> Operating system: =A0 Linux
> Description: =A0 =A0 =A0 =A0Attempting to rollback to a savepoint after r=
eceiving an
> error with state 55000 the process hangs
> Details:
>
> This may be a PHP so please excure me if it is.
>
> <?php
> $pdo =3D new PDO('pgsql:host=3Dlocalhost;dbname=3Da_db', 'a_user', 'my_pa=
ss');
> $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
>
> echo 'Creating test objects'."\n";
> $pdo->query('CREATE SEQUENCE test_seq');
>
> echo 'Setup complete'."\n";
> $pdo->beginTransaction();
>
> try {
> =A0 =A0echo 'Setting savepoint'."\n";
> =A0 =A0$pdo->query('SAVEPOINT pre_id_fetch');
> =A0 =A0echo 'Fetching value'."\n";
> =A0 =A0$stmt =3D $pdo->query('SELECT currval(\'test_seq\');');
> =A0 =A0$curId =3D $stmt->fetchColumn();
> =A0 =A0echo 'Releasing savepoint'."\n";
> =A0 =A0$pdo->query('RELEASE SAVEPOINT pre_id_fetch');
> } catch (PDOException $e) {
> =A0 =A0echo 'Rolling back'."\n";
> =A0 =A0$pdo->query('ROLLBACK TO pre_id_fetch');
> =A0 =A0$curId =3D 0;
> }
>
> echo 'Cur Id: ',$curId,"\n";
>
>
> Running this code it hangs after echoing 'Rolling back', but only hangs
> every other execution (assuming the sequence was deleted first).

I can't reproduce this using psql. Could you try?  I am guessing that
PHP is doing something funky, but I'm not really sure what.  I do
notice that you don't seem to have an endTransaction() or similar to
match the beginTransaction() - could that be relevant?

...Robert

pgsql-bugs by date:

Previous
From: Robert Haas
Date:
Subject: Re: statement_timeout is not cancelling query
Next
From: Greg Stark
Date:
Subject: Re: statement_timeout is not cancelling query