On Thu, Mar 20, 2025 at 09:59:45AM -0700, David G. Johnston wrote:
> I get the need for this kind of logic, since we used a boolean for the
> table option, but as a self-proclaimed hack it seems worth more comments
> than provided here.  Especially pertaining to whether this is indeed
> generic or vacuum_truncate specific.  It's unclear since both isset and
> vacuum_truncate_set have been introduced.

I'm happy to expand the comments, but...

> If it is now a general property
> applying to any setting then vacuum_truncate_set shouldn't be needed - we
> should just get the isset value of the existing vacuum_truncate reloption
> by name.

the reason I added this field is because I couldn't find any existing way
to get this information where it's needed.  So, I followed the existing
pattern of adding an offset to something we can access.  This can be used
for any reloption, but currently vacuum_truncate is the only one that does.

How does something like this look for the comment?

        /*
         * isset_offset is an optional offset of a field in the result struct
         * that stores whether the value is explicitly set for the relation or
         * has just picked up the default value.  In most cases, this can be
         * deduced by giving the reloption a special default value (e.g., -2 is
         * a common one for integer reloptions), but this isn't always
         * possible.  One notable example is Boolean reloptions, where it's
         * difficult to discern the source of the value.  This offset is only
         * used if given a value greater than zero.
         */
        int                     isset_offset;

-- 
nathan


Reply via email to