From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Thu, 8 Dec 2016 21:05:21 +0000 (+0200)
Subject: Fix thinko in safeguard for negative availMem.
X-Git-Tag: REL_10_BETA1~1278
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=64bc26f90d342ca343f5ba383a97691a58991204;p=postgresql

Fix thinko in safeguard for negative availMem.

Also, use pass read_buffer_size * numInputTapes rather than just availMem
to USEMEM, to be neat.

Peter Geoghegan.
---

diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index 46eecbf942..baf87b3cdf 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -2669,8 +2669,8 @@ mergeruns(Tuplesortstate *state)
 			 (state->availMem) / 1024, numInputTapes);
 #endif
 
-	state->read_buffer_size = Min(state->availMem / numInputTapes, 0);
-	USEMEM(state, state->availMem);
+	state->read_buffer_size = Max(state->availMem / numInputTapes, 0);
+	USEMEM(state, state->read_buffer_size * numInputTapes);
 
 	/* End of step D2: rewind all output tapes to prepare for merging */
 	for (tapenum = 0; tapenum < state->tapeRange; tapenum++)