diff options
-rw-r--r-- | src/backend/access/transam/xact.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index dbaaf8e0053..df7c8ebea1e 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -3190,12 +3190,25 @@ PreventTransactionChain(bool isTopLevel, const char *stmtType) } /* - * These two functions allow for warnings or errors if a command is - * executed outside of a transaction block. + * WarnNoTranactionChain + * RequireTransactionChain + * + * These two functions allow for warnings or errors if a command is executed + * outside of a transaction block. This is useful for commands that have no + * effects that persist past transaction end (and so calling them outside a + * transaction block is presumably an error). DECLARE CURSOR is an example. + * While top-level transaction control commands (BEGIN/COMMIT/ABORT) and SET + * that have no effect issue warnings, all other no-effect commands generate + * errors. + * + * If we appear to be running inside a user-defined function, we do not + * issue anything, since the function could issue more commands that make + * use of the current statement's results. Likewise subtransactions. + * Thus these are inverses for PreventTransactionChain. * - * While top-level transaction control commands (BEGIN/COMMIT/ABORT) and - * SET that have no effect issue warnings, all other no-effect commands - * generate errors. + * isTopLevel: passed down from ProcessUtility to determine whether we are + * inside a function. + * stmtType: statement type name, for warning or error messages. */ void WarnNoTransactionChain(bool isTopLevel, const char *stmtType) @@ -3210,21 +3223,7 @@ RequireTransactionChain(bool isTopLevel, const char *stmtType) } /* - * RequireTransactionChain - * - * This routine is to be called by statements that must run inside - * a transaction block, because they have no effects that persist past - * transaction end (and so calling them outside a transaction block - * is presumably an error). DECLARE CURSOR is an example. - * - * If we appear to be running inside a user-defined function, we do not - * issue anything, since the function could issue more commands that make - * use of the current statement's results. Likewise subtransactions. - * Thus this is an inverse for PreventTransactionChain. - * - * isTopLevel: passed down from ProcessUtility to determine whether we are - * inside a function. - * stmtType: statement type name, for warning or error messages. + * This is the implementation of the above two. */ static void CheckTransactionChain(bool isTopLevel, bool throwError, const char *stmtType) |