From e69b8d46559bee74b63917414320a7dcbdfd3fe5 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 6 Jan 2001 21:53:18 +0000
Subject: [PATCH] Fix memory leak in relcache handling of rules: allocate rule
 parsetrees in per-entry sub-memory-context, where they were supposed to go,
 rather than in CacheMemoryContext where the code was putting them.  Must've
 suffered a severe brain fade when I wrote this :-(

---
 src/backend/utils/cache/relcache.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 963818ffd9b..f3ca1903db9 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.124 2001/01/06 01:48:59 inoue Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.125 2001/01/06 21:53:18 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -881,7 +881,7 @@ RelationBuildRuleLock(Relation relation)
 		Assert(! isnull);
 		ruleaction_str = DatumGetCString(DirectFunctionCall1(textout,
 															 ruleaction));
-		oldcxt = MemoryContextSwitchTo(CacheMemoryContext);
+		oldcxt = MemoryContextSwitchTo(rulescxt);
 		rule->actions = (List *) stringToNode(ruleaction_str);
 		MemoryContextSwitchTo(oldcxt);
 		pfree(ruleaction_str);
@@ -893,7 +893,7 @@ RelationBuildRuleLock(Relation relation)
 		Assert(! isnull);
 		rule_evqual_str = DatumGetCString(DirectFunctionCall1(textout,
 															  rule_evqual));
-		oldcxt = MemoryContextSwitchTo(CacheMemoryContext);
+		oldcxt = MemoryContextSwitchTo(rulescxt);
 		rule->qual = (Node *) stringToNode(rule_evqual_str);
 		MemoryContextSwitchTo(oldcxt);
 		pfree(rule_evqual_str);
-- 
GitLab