diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-03-22 19:55:04 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-03-22 19:55:04 +0000 |
commit | 4f896dac17f7015b34347e278fc3db4047b86e43 (patch) | |
tree | 7eea59672726c94e3314b4847a5cabfe8d53f3d5 /src/backend/access/transam/xact.c | |
parent | 686956375a84f4ac9f214e402e9922b49813784a (diff) |
Arrange for PreventTransactionChain to reject commands submitted as part
of a multi-statement simple-Query message. This bug goes all the way
back, but unfortunately is not nearly so easy to fix in existing releases;
it is only the recent ProcessUtility API change that makes it fixable in
HEAD. Per report from William Garrison.
Diffstat (limited to 'src/backend/access/transam/xact.c')
-rw-r--r-- | src/backend/access/transam/xact.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 51a41ca4453..f8058a8f5e9 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.237 2007/03/13 14:32:25 petere Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.238 2007/03/22 19:55:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2503,9 +2503,10 @@ AbortCurrentTransaction(void) * completes). Subtransactions are verboten too. * * isTopLevel: passed down from ProcessUtility to determine whether we are - * inside a function. (We will always fail if this is false, but it's - * convenient to centralize the check here instead of making callers do it.) - * stmtType: statement type name, for error messages. + * inside a function or multi-query querystring. (We will always fail if + * this is false, but it's convenient to centralize the check here instead of + * making callers do it.) + * stmtType: statement type name, for error messages. */ void PreventTransactionChain(bool isTopLevel, const char *stmtType) @@ -2537,7 +2538,8 @@ PreventTransactionChain(bool isTopLevel, const char *stmtType) ereport(ERROR, (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION), /* translator: %s represents an SQL statement name */ - errmsg("%s cannot be executed from a function", stmtType))); + errmsg("%s cannot be executed from a function or multi-command string", + stmtType))); /* If we got past IsTransactionBlock test, should be in default state */ if (CurrentTransactionState->blockState != TBLOCK_DEFAULT && |