From 7ab88a16a111cb1c6c6ac67702c7772cf94bf1bf Mon Sep 17 00:00:00 2001
From: Jan Wieck <JanWieck@Yahoo.com>
Date: Tue, 2 Feb 1999 12:57:51 +0000
Subject: [PATCH] Fixed failed assertion happening in multiple action rules
 when parsestate in makeRangeTable() already contains an opened
 p_target_relation.

Jan
---
 src/backend/parser/parse_clause.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index 98ca2088810..8660e03f0f6 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.26 1998/09/25 13:36:03 thomas Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.27 1999/02/02 12:57:51 wieck Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,8 +62,13 @@ makeRangeTable(ParseState *pstate, char *relname, List *frmList)
 	else
 		rte = refnameRangeTableEntry(pstate, relname);
 
+	/* This could only happen for multi-action rules */
+	if (pstate->p_target_relation != NULL)
+	{
+		heap_close(pstate->p_target_relation);
+	}
+
 	pstate->p_target_rangetblentry = rte;
-	Assert(pstate->p_target_relation == NULL);
 	pstate->p_target_relation = heap_open(rte->relid);
 	/* will close relation later */
 }
-- 
GitLab