Use type "int64" for memory accounting in tuplesort.c/tuplestore.c.
authorNoah Misch <noah@leadboat.com>
Fri, 5 Jul 2013 03:09:54 +0000 (23:09 -0400)
committerNoah Misch <noah@leadboat.com>
Fri, 5 Jul 2013 03:13:54 +0000 (23:13 -0400)
commit79e0f87a15643efa9a94e011da509746dbb96798
tree35a5014eddaafda2d63158ea92bf788a6a0a52ca
parent7842d41df56ab8ad9aff76bc5bd8e96c3d215cde
Use type "int64" for memory accounting in tuplesort.c/tuplestore.c.

Commit 263865a48973767ce8ed7b7788059a38a24a9f37 switched tuplesort.c and
tuplestore.c variables representing memory usage from type "long" to
type "Size".  This was unnecessary; I thought doing so avoided overflow
scenarios on 64-bit Windows, but guc.c already limited work_mem so as to
prevent the overflow.  It was also incomplete, not touching the logic
that assumed a signed data type.  Change the affected variables to
"int64".  This is perfect for 64-bit platforms, and it reduces the need
to contemplate platform-specific overflow scenarios.  It also puts us
close to being able to support work_mem over 2 GiB on 64-bit Windows.

Per report from Andres Freund.
src/backend/utils/sort/tuplesort.c
src/backend/utils/sort/tuplestore.c
src/include/utils/tuplesort.h