OSDN Git Service

Fix problems with cached tuple descriptors disappearing while still in use
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Jun 2006 18:42:24 +0000 (18:42 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Jun 2006 18:42:24 +0000 (18:42 +0000)
commit06e10abc0bb4297a0754313b4f158bdd5622ca24
tree6d413dfdfab3fea4a6d96b07b7fdb8ba81498860
parentb49ce32da1975b2fdab26e463b7189b95e770809
Fix problems with cached tuple descriptors disappearing while still in use
by creating a reference-count mechanism, similar to what we did a long time
ago for catcache entries.  The back branches have an ugly solution involving
lots of extra copies, but this way is more efficient.  Reference counting is
only applied to tupdescs that are actually in caches --- there seems no need
to use it for tupdescs that are generated in the executor, since they'll go
away during plan shutdown by virtue of being in the per-query memory context.
Neil Conway and Tom Lane
36 files changed:
src/backend/access/common/tupdesc.c
src/backend/access/heap/tuptoaster.c
src/backend/commands/tablecmds.c
src/backend/executor/execJunk.c
src/backend/executor/execMain.c
src/backend/executor/execQual.c
src/backend/executor/execTuples.c
src/backend/executor/execUtils.c
src/backend/executor/nodeBitmapHeapscan.c
src/backend/executor/nodeFunctionscan.c
src/backend/executor/nodeHashjoin.c
src/backend/executor/nodeIndexscan.c
src/backend/executor/nodeMergejoin.c
src/backend/executor/nodeSeqscan.c
src/backend/executor/nodeSubplan.c
src/backend/executor/nodeSubqueryscan.c
src/backend/executor/nodeTidscan.c
src/backend/optimizer/util/clauses.c
src/backend/parser/parse_coerce.c
src/backend/parser/parse_target.c
src/backend/utils/adt/rowtypes.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/cache/relcache.c
src/backend/utils/cache/typcache.c
src/backend/utils/fmgr/funcapi.c
src/backend/utils/resowner/README
src/backend/utils/resowner/resowner.c
src/include/access/tupdesc.h
src/include/executor/executor.h
src/include/executor/tuptable.h
src/include/utils/resowner.h
src/include/utils/typcache.h
src/pl/plperl/plperl.c
src/pl/plpgsql/src/pl_exec.c
src/pl/plpython/plpython.c
src/pl/tcl/pltcl.c