From 2036b3fc597e4e39b87a185a60e51b2467d50783 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 15 Apr 2002 23:39:42 +0000
Subject: [PATCH] Disable VACUUM from being called from a function because
 function memory would be cleared by vacuum;  fix idea from Tom Lane.

---
 src/backend/commands/vacuum.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 20a366d02ab..eaee990c69d 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.223 2002/04/12 20:38:25 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.224 2002/04/15 23:39:42 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -181,6 +181,10 @@ vacuum(VacuumStmt *vacstmt)
 	if (IsTransactionBlock())
 		elog(ERROR, "%s cannot run inside a BEGIN/END block", stmttype);
 
+	/* Running VACUUM from a function would free the function context */
+	if (!MemoryContextContains(QueryContext, vacstmt))
+		elog(ERROR, "%s cannot be executed from a function", stmttype);
+                        
 	/*
 	 * Send info about dead objects to the statistics collector
 	 */