]> granicus.if.org Git - postgresql/commit
Modify logtape.c so that the initial LogicalTapeSetCreate call only
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 19 Feb 2006 05:58:36 +0000 (05:58 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 19 Feb 2006 05:58:36 +0000 (05:58 +0000)
commitb34aa3372fa51153e70514d86e2fd6c97dd80a12
tree50a6ea097411e048e37f9fa16a3f4963fbeddd36
parentdf700e6b40195d28dc764e0c694ac8cef90d4638
Modify logtape.c so that the initial LogicalTapeSetCreate call only
allocates the control data.  The per-tape buffers are allocated only
on first use.  This saves memory in situations where tuplesort.c
overestimates the number of tapes needed (ie, there are fewer runs
than tapes).  Also, this makes legitimate the coding in inittapes()
that includes tape buffer space in the maximum-memory calculation:
when inittapes runs, we've already expended the whole allowed memory
on tuple storage, and so we'd better not allocate all the tape buffers
until we've flushed some tuples out of memory.
src/backend/utils/sort/logtape.c