diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-04-13 18:56:54 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-04-13 18:56:54 -0400 |
commit | 1de8584fb1b71c98138b1f23808a4f01ab7566cd (patch) | |
tree | fd6431568a2e18a5e597b43312213d17ae52484b /src/backend/utils/adt/tsquery_gist.c | |
parent | ae99b3cca53cc343107aa38f647b07102b9b31c2 (diff) | |
download | postgresql-1de8584fb1b71c98138b1f23808a4f01ab7566cd.tar.gz postgresql-1de8584fb1b71c98138b1f23808a4f01ab7566cd.zip |
Ensure mark_dummy_rel doesn't create dangling pointers in RelOptInfos.
When we are doing GEQO join planning, the current memory context is a
short-lived context that will be reset at the end of geqo_eval(). However,
the RelOptInfos for base relations are set up before that and then re-used
across many GEQO cycles. Hence, any code that modifies a baserel during
join planning has to be careful not to put pointers to the short-lived
context into the baserel struct. mark_dummy_rel got this wrong, leading to
easy-to-reproduce-once-you-know-how crashes in 8.4, as reported off-list by
Leo Carson of SDSC. Some improvements made in 9.0 make it difficult to
demonstrate the crash in 9.0 or HEAD; but there's no doubt that there's
still a risk factor here, so patch all branches that have the function.
(Note: 8.3 has a similar function, but it's only applied to joinrels and
thus is not a hazard.)
Diffstat (limited to 'src/backend/utils/adt/tsquery_gist.c')
0 files changed, 0 insertions, 0 deletions