From d55588ea7a8a0203d27779263b1098688ee85bb2 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 6 Sep 2004 18:10:38 +0000
Subject: [PATCH] Guard against transaction control statements in SQL
 functions.  This never worked, but it particularly doesn't work now.

---
 src/backend/executor/functions.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c
index ea3b12be5f6..2a9e5d88a9e 100644
--- a/src/backend/executor/functions.c
+++ b/src/backend/executor/functions.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.86 2004/08/29 05:06:42 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.87 2004/09/06 18:10:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -285,6 +285,11 @@ postquel_getnext(execution_state *es)
 
 	if (es->qd->operation == CMD_UTILITY)
 	{
+		/* Can't handle starting or committing a transaction */
+		if (IsA(es->qd->parsetree->utilityStmt, TransactionStmt))
+			ereport(ERROR,
+					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+					 errmsg("cannot begin/end transactions in SQL functions")));
 		ProcessUtility(es->qd->parsetree->utilityStmt, es->qd->params,
 					   es->qd->dest, NULL);
 		return NULL;
-- 
GitLab