#include "storage/freespace.h"
#include "storage/smgr.h"
#include "utils/lsyscache.h"
+#include "utils/memutils.h"
#include "utils/pg_rusage.h"
maxtuples = (maintenance_work_mem * 1024L) / sizeof(ItemPointerData);
maxtuples = Min(maxtuples, INT_MAX);
+ maxtuples = Min(maxtuples, MaxAllocSize / sizeof(ItemPointerData));
/* stay sane if small maintenance_work_mem */
maxtuples = Max(maxtuples, MaxHeapTuplesPerPage);
palloc(maxtuples * sizeof(ItemPointerData));
maxpages = MaxFSMPages;
+ maxpages = Min(maxpages, MaxAllocSize / sizeof(PageFreeSpaceInfo));
/* No need to allocate more pages than the relation has blocks */
if (relblocks < (BlockNumber) maxpages)
maxpages = (int) relblocks;