Allow usage of huge maintenance_work_mem for GIN build.
authorTeodor Sigaev <teodor@sigaev.ru>
Wed, 2 Sep 2015 17:08:58 +0000 (20:08 +0300)
committerTeodor Sigaev <teodor@sigaev.ru>
Wed, 2 Sep 2015 17:08:58 +0000 (20:08 +0300)
commit30bb26b5e04cff911db960801e32e5f57045eb61
treeb05b945313ce910e999818a1194b2e88183b32f7
parent075ab425bdbb4bb2de41624305f20885cae7ba7e
Allow usage of huge maintenance_work_mem for GIN build.

Currently, in-memory posting list during GIN build process is limited 1GB
because of using repalloc. The patch replaces call of repalloc to repalloc_huge.
It increases limit of posting list from 180 millions
(1GB / sizeof(ItemPointerData)) to 4 billions limited by maxcount/count fields
in GinEntryAccumulator and subsequent calls. Check added.

Also, fix accounting of allocatedMemory during build to prevent integer
overflow with maintenance_work_mem > 4GB.

Robert Abraham <robert.abraham86@googlemail.com> with additions by me
src/backend/access/gin/ginbulk.c
src/backend/access/gin/ginfast.c
src/backend/access/gin/gininsert.c
src/include/access/gin_private.h