Re: Make use of unvolatize() in vac_truncate_clog() - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: Make use of unvolatize() in vac_truncate_clog()
Date
Msg-id 83e1933b-ee11-4903-91a0-24d5697378f2@eisentraut.org
Whole thread Raw
In response to Re: Make use of unvolatize() in vac_truncate_clog()  (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>)
Responses Re: Make use of unvolatize() in vac_truncate_clog()
List pgsql-hackers
On 24.02.26 19:16, Bertrand Drouvot wrote:
> On Tue, Feb 24, 2026 at 11:19:50AM -0600, Nathan Bossart wrote:
>> On Tue, Feb 24, 2026 at 05:08:09PM +0000, Bertrand Drouvot wrote:
>>> This patch makes use of unvolatize() in vac_truncate_clog().
>>>
>>> Note that it does not remove the warning but moves it to c.h (where unvolatize()
>>> is defined) but that's consistent with what 481018f2804 did too.
>>
>> Why is this preferable to marking the function parameter as volatile
> 
> I think that that would sound misleading for the other callers that don't really
> need the volatile qualification.
> 
>> or  removing the volatile qualifier from the variable?
> 
> That looks mandatory according to 2d2e40e3bef.

Arguably, putting the volatile qualifier on the whole dbform is broader 
than required.  So you could imagine writing it something like this instead:

     FormData_pg_database *dbform = (Form_pg_database) GETSTRUCT(tuple);
     volatile TransactionId *datfrozenxid_p;
     volatile TransactionId *datminmxid_p;

     *datfrozenxid_p = dbform->datfrozenxid;
     *datminmxid_p = dbform->datminmxid;

Alternatively, we should document why applying unvolatize() is 
acceptable, like

     /* ... unvolatize() is ok because datconnlimit is not concurrently
        updated (see above) ...

Or just write it directly like

     if (dbform->datconnlimit == DATCONNLIMIT_INVALID_DB)

This violates the abstraction layer, but the variant with the comment 
kind of does too.




pgsql-hackers by date:

Previous
From: Aleksander Alekseev
Date:
Subject: Re: Passing mac-addresses by value?
Next
From: Andrei Lepikhov
Date:
Subject: Re: Skipping schema changes in publication