Fix memory leak in relcache handling of rules: allocate rule parsetrees
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Jan 2001 21:53:18 +0000 (21:53 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 6 Jan 2001 21:53:18 +0000 (21:53 +0000)
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

index 963818ffd9b764808365b83a5fe7fa0094018af8..f3ca1903db9a6ee0436f1995e26dbba332875c5c 100644 (file)
@@ -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);