|
|
|
|
@ -7,7 +7,7 @@ |
|
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
|
* |
|
|
|
|
* IDENTIFICATION |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.16.2.1 2005/11/22 18:23:05 momjian Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.16.2.2 2007/02/13 19:39:55 tgl Exp $ |
|
|
|
|
* |
|
|
|
|
* NOTES |
|
|
|
|
* Each global transaction is associated with a global transaction |
|
|
|
|
@ -390,6 +390,18 @@ LockGXact(const char *gid, Oid user) |
|
|
|
|
errmsg("permission denied to finish prepared transaction"), |
|
|
|
|
errhint("Must be superuser or the user that prepared the transaction."))); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Note: it probably would be possible to allow committing from another |
|
|
|
|
* database; but at the moment NOTIFY is known not to work and there |
|
|
|
|
* may be some other issues as well. Hence disallow until someone |
|
|
|
|
* gets motivated to make it work. |
|
|
|
|
*/ |
|
|
|
|
if (MyDatabaseId != gxact->proc.databaseId) |
|
|
|
|
ereport(ERROR, |
|
|
|
|
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), |
|
|
|
|
errmsg("prepared transaction belongs to another database"), |
|
|
|
|
errhint("Connect to the database where the transaction was prepared to finish it."))); |
|
|
|
|
|
|
|
|
|
/* OK for me to lock it */ |
|
|
|
|
gxact->locking_xid = GetTopTransactionId(); |
|
|
|
|
|
|
|
|
|
|