On 27.01.26 13:55, Bertrand Drouvot wrote:
> Hi,
>
> On Mon, Jan 26, 2026 at 01:17:15PM +0100, Peter Eisentraut wrote:
>> I'm proposing two changes:
>>
>> First, rename AssertVariableIsOfType to StaticAssertVariableIsOfType. The
>> current name suggests that it is a run-time assertion (like "Assert"), but
>> it's not. The name change makes that clearer.
>>
>> I doubt that the current name is used in many extensions, but if necessary,
>> extension code could adapt to this quite easily with something like
>>
>> #if PG_VERSION_NUM < ...
>> #define StaticAssertVariableIsOfType(x, y) AssertVariableIsOfType(x, y)
>> #endif
>>
>> Second, change the underlying implementation of StaticAssertVariableIsOfType
>> to use StaticAssertDecl instead of StaticAssertStmt. This makes
>> StaticAssertVariableIsOfType behave more like a normal static assertion, and
>> in many cases we can move the current instances to a more natural position
>> at file scope. This is similar to previous commits like 493eb0da31b.
>
> Both make sense and looks good to me.
Thanks, committed.
> Once they are in, I'm wondering if the remaining StaticAssertStmt ones:
>
> src/backend/backup/basebackup.c: StaticAssertStmt(2 * TAR_BLOCK_SIZE <= BLCKSZ,
> src/backend/storage/lmgr/deadlock.c: StaticAssertStmt(MAX_BACKENDS_BITS <= (32 - 3),
> src/backend/utils/mmgr/aset.c: StaticAssertStmt(ALLOC_CHUNK_LIMIT == ALLOCSET_SEPARATE_THRESHOLD,
>
> could be replaced by StaticAssertDecl() too (that has not been done in 493eb0da31b
> and (from a quick scan) not mentioned in the linked thread). I did not look in
> details so maybe there is good reasons to keep them.
Yeah, maybe it would be good to get rid of these remaining few. I
suppose we could just change Stmt to Decl and put braces around the
block, but maybe there are some more elegant places to move these.