I'd like to do the complementary explanation of this. In tbm_union_page() and tbm_intersect_page() in tidbitmap.c, WORDS_PER_PAGE is used in the scan of a lossy chunk, instead of WORDS_PER_CHUNK, where these macros are defined as:
/* number of active words for an exact page: */ #define WORDS_PER_PAGE ((MAX_TUPLES_PER_PAGE - 1) / BITS_PER_BITMAPWORD + 1) /* number of active words for a lossy chunk: */ #define WORDS_PER_CHUNK ((PAGES_PER_CHUNK - 1) / BITS_PER_BITMAPWORD + 1) Though the use of WORDS_PER_PAGE in the scan of a lossy chunk is logically correct since these macros implicitly satisfy that WORDS_PER_CHUNK < WORDS_PER_PAGE, I think WORDS_PER_CHUNK should be used in the scan of a lossy chunk for code readability and maintenance. So, I submitted a patch working in such a way in an earlier email. I think that, as a secondary effect of the patch, the scan would be performed a bit efficiently. I'll add the patch to the 2013-11 CF. Any comments are welcome. Thanks, Best regards, Etsuro Fujita -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers