Reset the transcation state before exiting from lock_exclusive.
Previously we exited from lock_exclusive() while opening the transaction that started at beggning if --no-kill-backend option is specified. This caused that DROP INDEX CONCURRENTLY fails because it cannot be executed within a user transaction block. Fixed issue #129.
This commit is contained in:
parent
1b651bd3d9
commit
900bb8369b
@ -1780,7 +1780,12 @@ lock_exclusive(PGconn *conn, const char *relid, const char *lock_query, bool sta
|
|||||||
{
|
{
|
||||||
elog(WARNING, "timed out, do not cancel conflicting backends");
|
elog(WARNING, "timed out, do not cancel conflicting backends");
|
||||||
ret = false;
|
ret = false;
|
||||||
|
|
||||||
|
/* Before exit the loop reset the transaction */
|
||||||
|
if (start_xact)
|
||||||
pgut_rollback(conn);
|
pgut_rollback(conn);
|
||||||
|
else
|
||||||
|
pgut_command(conn, "ROLLBACK TO SAVEPOINT repack_sp1", 0, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user