Re: BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs
От
Mark Kirkwood
Тема
Re: BUG #5244: Attempting to rollback to a savepoint after
receiving an error with state 55000 the process hangs
Дата
Msg-id
4B29664B.6010505@catalyst.net.nz
Ответ на
BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs (Philip Graham)
Список
Дерево обсуждения
BUG #5244: Attempting to rollback to a savepoint after receiving an error with state 55000 the process hangs "Philip Graham" <philip@lightbox.org>
Re: BUG #5244: Attempting to rollback to a savepoint after
receiving an error with state 55000 the process hangs Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Re: BUG #5244: Attempting to rollback to a savepoint after
receiving an error with state 55000 the process hangs Robert Haas <robertmhaas@gmail.com>
Re: BUG #5244: Attempting to rollback to a savepoint after
receiving an error with state 55000 the process hangs Philip Graham <philip@lightbox.org>
Re: BUG #5244: Attempting to rollback to a savepoint after
receiving an error with state 55000 the process hangs Robert Haas <robertmhaas@gmail.com>
Philip Graham wrote:
> The following bug has been logged online:
>
> Bug reference: 5244
> Logged by: Philip Graham
> Email address: philip@lightbox.org
> PostgreSQL version: 8.3.8
> Operating system: Linux
> Description: Attempting to rollback to a savepoint after receiving an
> error with state 55000 the process hangs
> Details:
>
> This may be a PHP so please excure me if it is.
>
> $pdo = new PDO('pgsql:host=localhost;dbname=a_db', 'a_user', 'my_pass');
> $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 {
> echo 'Setting savepoint'."\n";
> $pdo->query('SAVEPOINT pre_id_fetch');
> echo 'Fetching value'."\n";
> $stmt = $pdo->query('SELECT currval(\'test_seq\');');
> $curId = $stmt->fetchColumn();
> echo 'Releasing savepoint'."\n";
> $pdo->query('RELEASE SAVEPOINT pre_id_fetch');
> } catch (PDOException $e) {
> echo 'Rolling back'."\n";
> $pdo->query('ROLLBACK TO pre_id_fetch');
> $curId = 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 think you need to be using $pdo->exec instead of $pdo->query for
everything *except* the SELECT operation. The query method is really
only intended for statements returning rows. Making the indicated
changes stops the hang for me (Php 5.3.2)
regards
MarkВ списке pgsql-bugs по дате отправления
От: Chris Travers
Дата: