Re: [PATCH] Add tests for Bitmapset
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael@paquier.xyz>
Cc: Greg Burd <greg@burd.me>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Robert Haas <robertmhaas@gmail.com>,
Nathan Bossart <nathandbossart@gmail.com>,
Masahiko Sawada <sawada.mshk@gmail.com>
Date: 2025-09-23T16:46:49Z
Lists: pgsql-hackers
Michael Paquier <michael@paquier.xyz> writes: > On Tue, Sep 23, 2025 at 01:43:47AM -0400, Tom Lane wrote: >> This patch seems to be rather full of arbitrary casts to or >> from Datum, which is no longer okay. You need to be using >> the appropriate conversion macros, such as PointerGetDatum. > Right, this can ve reproduced with a -m32 added to gcc. Curiously, I don't see these warnings on 32-bit FreeBSD (with clang version 19.1.7). But I tested your patch on mamba's host and confirmed that it makes that gcc happy. > I don't see a need for a Datum manipulation in these conversion > macros, as we already allocate the results to and from "text" > before/after using the GETARG or RETURN macros. Using directly > text_to_cstring() and cstring_to_text() takes care of the warnings, as > well. Yeah, this is better, but I think the new macros could use a bit more parenthesis-twiddling: +#define BITMAPSET_TO_TEXT(bms) cstring_to_text(nodeToString((bms))) The extra parens around "bms" are surely unnecessary. (If they were necessary, it could only be because nodeToString was a macro that failed to parenthesize its argument where needed. But that would be a bug to fix in nodeToString, not here.) +#define TEXT_TO_BITMAPSET(str) (Bitmapset *) stringToNode(text_to_cstring(str)) Here, on the other hand, I think an extra outer set of parens would be a good idea, ie +#define TEXT_TO_BITMAPSET(str) ((Bitmapset *) stringToNode(text_to_cstring(str))) It may be that the C cast binds tightly enough that this cannot be a problem, but I don't think assuming that is project style. regards, tom lane
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