From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | John Naylor <john(dot)naylor(at)enterprisedb(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: move some bitmapset.c macros to bitmapset.h |
Date: | 2022-12-06 04:57:20 |
Message-ID: | 3548001.1670302640@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
John Naylor <john(dot)naylor(at)enterprisedb(dot)com> writes:
> On Mon, Dec 5, 2022 at 9:33 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> IMV these are absolutely private to bitmapset.c. I reject the idea
>> that they should be exposed publicly, under these names or any others.
> Well, they've already escaped to tidbitmap.c as a copy. How do you feel
> about going that route?
Not terribly pleased with that either, I must admit.
>> Maybe we need some more bitmapset primitive functions? What is it
>> you actually want to accomplish in the end?
> for (idx = 0; idx < WORDNUM(128); idx++)
BITS_PER_BITMAPWORD is already public, so can't you spell that
for (idx = 0; idx < 128/BITS_PER_BITMAPWORD; idx++)
> slotpos += bmw_rightmost_one_pos(inverse);
I'm not terribly against exposing bmw_rightmost_one_pos, given
that it's just exposing the pg_rightmost_one_posXX variant that
matches BITS_PER_BITMAPWORD.
> isset[idx] |= RIGHTMOST_ONE(inverse);
And RIGHTMOST_ONE is something that could be made public, but
I think it belongs in pg_bitutils.h, perhaps with a different
name.
> ...which, if it were reversed so that a set bit meant "available", would
> essentially be bms_first_member(), so a more primitive version of that
> might work.
That could be a reasonable direction to pursue as well.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Drouvot, Bertrand | 2022-12-06 05:04:58 | Re: Generate pg_stat_get_* functions with Macros |
Previous Message | David G. Johnston | 2022-12-06 04:57:05 | Re: ANY_VALUE aggregate |