|
7 | 7 | * Portions Copyright (c) 1994, Regents of the University of California
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - *$PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.27 2007/01/16 13:28:56 alvherre Exp $ |
| 10 | + *$PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.28 2007/02/13 19:39:42 tgl Exp $ |
11 | 11 | *
|
12 | 12 | * NOTES
|
13 | 13 | *Each global transaction is associated with a global transaction
|
@@ -393,6 +393,18 @@ LockGXact(const char *gid, Oid user)
|
393 | 393 | errmsg("permission denied to finish prepared transaction"),
|
394 | 394 | errhint("Must be superuser or the user that prepared the transaction.")));
|
395 | 395 |
|
| 396 | +/* |
| 397 | + * Note: it probably would be possible to allow committing from another |
| 398 | + * database; but at the moment NOTIFY is known not to work and there |
| 399 | + * may be some other issues as well. Hence disallow until someone |
| 400 | + * gets motivated to make it work. |
| 401 | + */ |
| 402 | +if (MyDatabaseId!=gxact->proc.databaseId) |
| 403 | +ereport(ERROR, |
| 404 | +(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), |
| 405 | +errmsg("prepared transaction belongs to another database"), |
| 406 | +errhint("Connect to the database where the transaction was prepared to finish it."))); |
| 407 | + |
396 | 408 | /* OK for me to lock it */
|
397 | 409 | gxact->locking_xid=GetTopTransactionId();
|
398 | 410 |
|
|