Re: [PATCH] Add tests for Bitmapset

Ranier Vilela <ranier.vf@gmail.com>

From: Ranier Vilela <ranier.vf@gmail.com>
To: Greg Burd <greg@burd.me>
Cc: Daniel Gustafsson <daniel@yesql.se>, David Rowley <dgrowleyml@gmail.com>, Michael Paquier <michael@paquier.xyz>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-08T19:24:08Z
Lists: pgsql-hackers
Em qua., 8 de out. de 2025 às 15:48, Greg Burd <greg@burd.me> escreveu:

>
> On Oct 8 2025, at 8:10 am, Ranier Vilela <ranier.vf@gmail.com> wrote:
>
> > Hi.
> >
> >
> >> Em sex., 3 de out. de 2025 às 09:13, Greg Burd <greg@burd.me> escreveu:
> >>
> >>>
> >>> On Oct 3 2025, at 4:25 am, Daniel Gustafsson <daniel@yesql.se> wrote:
> >>>
> >>>>> On 3 Oct 2025, at 01:36, David Rowley <dgrowleyml@gmail.com> wrote:
> >>>>>
> >>>>> On Fri, 3 Oct 2025 at 01:33, Daniel Gustafsson <daniel@yesql.se>
> wrote:
> >>>>>> Another nitpick would be to remove the test for NULL in
> test_bms_make_singleton
> >>>>>> since that is a STRICT function, making the test for NULL
> >>>>>> superfluous code:
> >>>>>
> >>>>> I see test_random_operations() is also strict. Is it worth getting
> rid
> >>>>> of the SQL NULL checks on the inputs there too? Aka, the attached.
> >>>>
> >>>> Indeed, but reading the code I wonder if STRICT was a mistake and
> >>>> the intention
> >>>> was to allow NULL input?
> >>>
> >>> Yes, it was an oversight after I re-worked the random function.
> >>>
> >>>> That being said, the function is never called with
> >>>> NULL so that's mostly academic thinking.  +1 for removing the NULL
> >>>> checks and simplifying the code.
> >>>
> >>> I agree, and thank you both for the attention to detail and interest in
> >>> this test suite.
> >> With the patch attached, there are regression.
> >> Is it intentional not to check the return of the function bms_is_member?
> >>
> >> diff --strip-trailing-cr -U3
> >>
> C:/dll/postgres_dev/postgres_commit/src/test/modules/test_bitmapset/expected/test_bitmapset.out
> C:/dll/postgres_dev/postgres_commit/build/testrun/test_bitmapset/regress/results/test_bitmapset.out
> >> ---
> >>
> C:/dll/postgres_dev/postgres_commit/src/test/modules/test_bitmapset/expected/test_bitmapset.out
> >> 2025-10-02 21:17:53.169515700 -0300
> >> +++
> >>
> C:/dll/postgres_dev/postgres_commit/build/testrun/test_bitmapset/regress/results/test_bitmapset.out
> >> 2025-10-07 21:24:00.534142300 -0300
> >> @@ -1570,9 +1570,5 @@
> >>
> >>  -- random operations
> >>  SELECT test_random_operations(-1, 10000, 81920, 0) > 0 AS result;
> >> - result
> >> ---------
> >> - t
> >> -(1 row)
> >> -
> >> +ERROR:  union missing member 63904
> >>  DROP EXTENSION test_bitmapset;
> >>
> >> best regards,
> >> Ranier Vilela
>
> Thanks Ranier for the report.
>
> You're correct, the tests I wrote overlooked testing the return value
> and so were not accomplishing the goal of testing at all.
>
> Adding your small suggested patched turned over another flaw.  The error
> message you were seeing was from later in that same function.
>
> > +ERROR:  union missing member 63904
>
> This was emitted by the code in the second portion of the randomized
> testing where there is a loop doing add/del/test operations.  That error
> message was misleading as it matched the earlier error message near the
> change you made.
>
> But, thankfully that pointed to a second (face palm) flaw in that
> function (again, I take full credit/blame).  The add/del/test loop
> wasn't accumulating the anticipated set of members and so was testing if
> the latest random int generated was in the set or not, which makes no
> sense.  I've updated that loop to retain the list of members and the
> test to check against the retained list of members.  I've updated the
> log message to be different from those above to avoid similar confusion
> in the future.
>
> This seems to be passing now, apologies for not paying closer attention
> to this code earlier on.
>
Great. Thank you for their efforts.

Tests pass here too (Windows).

LGTM.

best regards,
Ranier Vilela

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Minor fixes for test_bitmapset.c

  2. test_bitmapset: Improve random function

  3. Add mem_exceeded_count column to pg_stat_replication_slots.

  4. Tidy-up unneeded NULL parameter checks from SQL function

  5. Remove check for NULL in STRICT function

  6. Fixes for comments in test_bitmapset

  7. Minor fixups of test_bitmapset.c

  8. test_bitmapset: Simplify code of the module

  9. test_bitmapset: Expand more the test coverage

  10. Fix compiler warnings in test_bitmapset

  11. Add a test module for Bitmapset