]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix failure due to accessing an already-freed tuple descriptor in a plan
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 26 Dec 2006 21:37:28 +0000 (21:37 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 26 Dec 2006 21:37:28 +0000 (21:37 +0000)
commit4a1bffa066e46a5707db33f5c8403df74c00e322
tree7dca166a40a9bd684bbd57e37c326bb14ed79b81
parent85a373b1f087ca15a7f1a84b5f9541400d02ad00
Fix failure due to accessing an already-freed tuple descriptor in a plan
involving HashAggregate over SubqueryScan (this is the known case, there
may well be more).  The bug is only latent in releases before 8.2 since they
didn't try to access tupletable slots' descriptors during ExecDropTupleTable.
The least bogus fix seems to be to make subqueries share the parent query's
memory context, so that tupdescs they create will have the same lifespan as
those of the parent query.  There are comments in the code envisioning going
even further by not having a separate child EState at all, but that will
require rethinking executor access to range tables, which I don't want to
tackle right now.  Per bug report from Jean-Pierre Pelletier.
src/backend/executor/execMain.c
src/backend/executor/execUtils.c
src/backend/executor/nodeSubplan.c
src/backend/executor/nodeSubqueryscan.c
src/include/executor/executor.h
src/include/nodes/execnodes.h