Re: [PATCH] Add tests for Bitmapset - Mailing list pgsql-hackers
From | Ranier Vilela |
---|---|
Subject | Re: [PATCH] Add tests for Bitmapset |
Date | |
Msg-id | CAEudQAqAVv366zBMSZ6Kxe+9+86=T9CoojNztVkjYB+Pf_RmCQ@mail.gmail.com Whole thread Raw |
In response to | Re: [PATCH] Add tests for Bitmapset (Greg Burd <greg@burd.me>) |
List | 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
pgsql-hackers by date: