Fix performance problem when building a lossy tidbitmap.
Tom Lane <tgl@sss.pgh.pa.us>
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.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/nodes/tidbitmap.c | modified | +19 −3 |