aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistproc.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-06-15 14:05:22 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-06-15 14:06:01 -0400
commit8520174b4e788736a41797320d9d36a4372b56df (patch)
tree2eb0b436fd3a7afa6a09d4f9e2744d15fe607b38 /src/backend/access/gist/gistproc.c
parent212567ad3ee23c7ff630e41034c48814b3f18cc9 (diff)
downloadpostgresql-8520174b4e788736a41797320d9d36a4372b56df.tar.gz
postgresql-8520174b4e788736a41797320d9d36a4372b56df.zip
Fix failure to account for memory used by tuplestore_putvalues().
This oversight could result in a tuplestore using much more than the intended amount of memory. It would only happen in a code path that loaded a tuplestore via tuplestore_putvalues(), and many of those won't emit huge amounts of data; but cases such as holdable cursors and plpgsql's RETURN NEXT command could have the problem. The fix ensures that the tuplestore will switch to write-to-disk mode when it overruns work_mem. The potential overrun was finite, because we would still count the space used by the tuple pointer array, so the tuplestore code would eventually flip into write-to-disk mode anyway. When storing wide tuples we would go far past the expected work_mem usage before that happened; but this may account for the lack of prior reports. Back-patch to 8.4, where tuplestore_putvalues was introduced. Per bug #6061 from Yann Delorme.
Diffstat (limited to 'src/backend/access/gist/gistproc.c')
0 files changed, 0 insertions, 0 deletions