@@ -211,8 +211,8 @@ struct Tuplesortstate
211211 * tuples to return? */
212212 bool boundUsed ; /* true if we made use of a bounded heap */
213213 int bound ; /* if bounded, the maximum number of tuples */
214- Size availMem ; /* remaining memory available, in bytes */
215- Size allowedMem ; /* total memory allowed, in bytes */
214+ int64 availMem ; /* remaining memory available, in bytes */
215+ int64 allowedMem ; /* total memory allowed, in bytes */
216216 int maxTapes ; /* number of tapes (Knuth's T) */
217217 int tapeRange ; /* maxTapes-1 (Knuth's P) */
218218 MemoryContext sortcontext ; /* memory context holding all sort data */
@@ -308,7 +308,7 @@ struct Tuplesortstate
308308 int * mergenext ; /* first preread tuple for each source */
309309 int * mergelast ; /* last preread tuple for each source */
310310 int * mergeavailslots ; /* slots left for prereading each tape */
311- Size * mergeavailmem ; /* availMem for prereading each tape */
311+ int64 * mergeavailmem ; /* availMem for prereading each tape */
312312 int mergefreelist ; /* head of freelist of recycled slots */
313313 int mergefirstfree ; /* first slot never used in this merge */
314314
@@ -565,7 +565,7 @@ tuplesort_begin_common(int workMem, bool randomAccess)
565565 state -> randomAccess = randomAccess ;
566566 state -> bounded = false;
567567 state -> boundUsed = false;
568- state -> allowedMem = workMem * 1024L ;
568+ state -> allowedMem = workMem * ( int64 ) 1024 ;
569569 state -> availMem = state -> allowedMem ;
570570 state -> sortcontext = sortcontext ;
571571 state -> tapeset = NULL ;
@@ -980,7 +980,7 @@ grow_memtuples(Tuplesortstate *state)
980980{
981981 int newmemtupsize ;
982982 int memtupsize = state -> memtupsize ;
983- Size memNowUsed = state -> allowedMem - state -> availMem ;
983+ int64 memNowUsed = state -> allowedMem - state -> availMem ;
984984
985985 /* Forget it if we've already maxed out memtuples, per comment above */
986986 if (!state -> growmemtuples )
@@ -991,7 +991,7 @@ grow_memtuples(Tuplesortstate *state)
991991 {
992992 /*
993993 * We've used no more than half of allowedMem; double our usage,
994- * clamping at INT_MAX.
994+ * clamping at INT_MAX tuples .
995995 */
996996 if (memtupsize < INT_MAX / 2 )
997997 newmemtupsize = memtupsize * 2 ;
@@ -1048,7 +1048,9 @@ grow_memtuples(Tuplesortstate *state)
10481048 /*
10491049 * On a 32-bit machine, allowedMem could exceed MaxAllocHugeSize. Clamp
10501050 * to ensure our request won't be rejected. Note that we can easily
1051- * exhaust address space before facing this outcome.
1051+ * exhaust address space before facing this outcome. (This is presently
1052+ * impossible due to guc.c's MAX_KILOBYTES limitation on work_mem, but
1053+ * don't rely on that at this distance.)
10521054 */
10531055 if ((Size ) newmemtupsize >= MaxAllocHugeSize / sizeof (SortTuple ))
10541056 {
@@ -1067,7 +1069,7 @@ grow_memtuples(Tuplesortstate *state)
10671069 * palloc would be treating both old and new arrays as separate chunks.
10681070 * But we'll check LACKMEM explicitly below just in case.)
10691071 */
1070- if (state -> availMem < (Size ) ((newmemtupsize - memtupsize ) * sizeof (SortTuple )))
1072+ if (state -> availMem < (int64 ) ((newmemtupsize - memtupsize ) * sizeof (SortTuple )))
10711073 goto noalloc ;
10721074
10731075 /* OK, do it */
@@ -1722,7 +1724,7 @@ tuplesort_getdatum(Tuplesortstate *state, bool forward,
17221724 * This is exported for use by the planner. allowedMem is in bytes.
17231725 */
17241726int
1725- tuplesort_merge_order (Size allowedMem )
1727+ tuplesort_merge_order (int64 allowedMem )
17261728{
17271729 int mOrder ;
17281730
@@ -1756,7 +1758,7 @@ inittapes(Tuplesortstate *state)
17561758 int maxTapes ,
17571759 ntuples ,
17581760 j ;
1759- Size tapeSpace ;
1761+ int64 tapeSpace ;
17601762
17611763 /* Compute number of tapes to use: merge order plus 1 */
17621764 maxTapes = tuplesort_merge_order (state -> allowedMem ) + 1 ;
@@ -1805,7 +1807,7 @@ inittapes(Tuplesortstate *state)
18051807 state -> mergenext = (int * ) palloc0 (maxTapes * sizeof (int ));
18061808 state -> mergelast = (int * ) palloc0 (maxTapes * sizeof (int ));
18071809 state -> mergeavailslots = (int * ) palloc0 (maxTapes * sizeof (int ));
1808- state -> mergeavailmem = (Size * ) palloc0 (maxTapes * sizeof (Size ));
1810+ state -> mergeavailmem = (int64 * ) palloc0 (maxTapes * sizeof (int64 ));
18091811 state -> tp_fib = (int * ) palloc0 (maxTapes * sizeof (int ));
18101812 state -> tp_runs = (int * ) palloc0 (maxTapes * sizeof (int ));
18111813 state -> tp_dummy = (int * ) palloc0 (maxTapes * sizeof (int ));
@@ -2033,7 +2035,7 @@ mergeonerun(Tuplesortstate *state)
20332035 int srcTape ;
20342036 int tupIndex ;
20352037 SortTuple * tup ;
2036- Size priorAvail ,
2038+ int64 priorAvail ,
20372039 spaceFreed ;
20382040
20392041 /*
@@ -2107,7 +2109,7 @@ beginmerge(Tuplesortstate *state)
21072109 int tapenum ;
21082110 int srcTape ;
21092111 int slotsPerTape ;
2110- Size spacePerTape ;
2112+ int64 spacePerTape ;
21112113
21122114 /* Heap should be empty here */
21132115 Assert (state -> memtupcount == 0 );
@@ -2228,7 +2230,7 @@ mergeprereadone(Tuplesortstate *state, int srcTape)
22282230 unsigned int tuplen ;
22292231 SortTuple stup ;
22302232 int tupIndex ;
2231- Size priorAvail ,
2233+ int64 priorAvail ,
22322234 spaceUsed ;
22332235
22342236 if (!state -> mergeactive [srcTape ])
0 commit comments