]> granicus.if.org Git - postgresql/commit
Fix performance problem when building a lossy tidbitmap.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Aug 2011 18:51:02 +0000 (14:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Aug 2011 18:51:43 +0000 (14:51 -0400)
commitcb54b6614b6c34f5396d29de1e92b34a83b6c072
tree2a77fedc79bf615cbce73c896462477d49065a18
parentbcc9b17bbf92d1d94581d5536770b9689a767c37
Fix performance problem when building a lossy tidbitmap.

As pointed out by Sergey Koposov, repeated invocations of tbm_lossify can
make building a large tidbitmap into an O(N^2) operation.  To fix, make
sure we remove more than the minimum amount of information per call, and
add a fallback path to behave sanely if we're unable to fit the bitmap
within the requested amount of memory.

This has been wrong since the tidbitmap code was written, so back-patch
to all supported branches.
src/backend/nodes/tidbitmap.c