}
/*
- * 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)
}
/*
- * 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)