]> granicus.if.org Git - postgresql/commit
Use a private memory context to store rule information in each relcache
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 30 Jun 2000 07:04:23 +0000 (07:04 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 30 Jun 2000 07:04:23 +0000 (07:04 +0000)
commitb41f4ab8c448fc1bb13b52d00c9c4f1868d97941
tree5e832a1210f93033aeab63a572dc81229ad4aa7c
parentc9ec78a6b89e846c5b1be0aa40b6532ca209c850
Use a private memory context to store rule information in each relcache
entry that has rules.  This allows us to release the rule parsetrees
on relcache flush without needing a working freeObject() routine.
Formerly, the rule trees were leaked permanently at relcache flush.
Also, clean up handling of rule creation and deletion --- there was
not sufficient locking of the relation being modified, and there was
no reliable notification of other backends that a relcache reload
was needed.  Also, clean up relcache.c code so that scans of system
tables needed to load a relcache entry are done in the caller's
memory context, not in CacheMemoryContext.  This prevents any
un-pfreed memory from those scans from becoming a permanent memory
leak.
src/backend/catalog/index.c
src/backend/commands/trigger.c
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteRemove.c
src/backend/rewrite/rewriteSupport.c
src/backend/utils/cache/relcache.c
src/include/catalog/index.h
src/include/rewrite/rewriteSupport.h
src/include/utils/rel.h