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 →
-
Minor fixes for test_bitmapset.c
- 5142f0093e64 19 (unreleased) landed
-
test_bitmapset: Improve random function
- 9d46b86529e8 19 (unreleased) landed
-
Add mem_exceeded_count column to pg_stat_replication_slots.
- d3b6183dd988 19 (unreleased) landed
-
Tidy-up unneeded NULL parameter checks from SQL function
- a69b55cd4727 19 (unreleased) landed
-
Remove check for NULL in STRICT function
- 381f5cffae00 19 (unreleased) landed
-
Fixes for comments in test_bitmapset
- a1b064e4b226 19 (unreleased) landed
-
Minor fixups of test_bitmapset.c
- 3a6615806859 19 (unreleased) landed
-
test_bitmapset: Simplify code of the module
- 9952f6c05a40 19 (unreleased) landed
-
test_bitmapset: Expand more the test coverage
- 5668fff3c512 19 (unreleased) landed
-
Fix compiler warnings in test_bitmapset
- f83fe65f3fc1 19 (unreleased) landed
-
Add a test module for Bitmapset
- 00c3d87a5cab 19 (unreleased) landed