postgres.git / summary / log / commit / refs

commit    7d559c8580f722dc40f2c34573e53e33626679e0
Author:   Nathan Bossart <nathan@postgresql.org>
Date:     Mon Mar 24 20:47:02 2025 +0000
First released in: 18.0

    Expand comment for isset_offset.
    
    This field was added in commit 0164a0f9ee to provide a way to
    determine whether a storage parameter was explicitly set for the
    relation or if it just picked up the default value.  In most cases,
    this can be accomplished by giving the storage parameter a special
    out-of-range default value (e.g., the
    autovacuum_vacuum_insert_threshold storage parameter defaults to
    -2), but this approach doesn't work in all cases.  For example, a
    Boolean storage parameter cannot be given an out-of-range default,
    so we need another way to discover the source of its value.
    
    Reported-by: "David G. Johnston" <david.g.johnston@gmail.com>
    Reviewed-by: "David G. Johnston" <david.g.johnston@gmail.com>
    Discussion: https://postgr.es/m/CAKFQuwYKtEUYKS%2B18gRs-xPhn0qOJgM2KGyyWVCODHuVn9F-XQ%40mail.gmail.com


src/include/access/reloptions.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/include/access/reloptions.h b/src/include/access/reloptions.h index 146aed47c2d..dfbb4c85460 100644 --- a/src/include/access/reloptions.h +++ b/src/include/access/reloptions.h @@ -152,7 +152,19 @@ typedef struct const char *optname; /* option's name */ relopt_type opttype; /* option's datatype */ int offset; /* offset of field in result struct */ - int isset_offset; /* if > 0, offset of "is set" field */ + + /* + * isset_offset is an optional offset of a field in the result struct that + * stores whether the option is explicitly set for the relation or if it + * just picked up the default value. In most cases, this can be + * accomplished by giving the reloption a special out-of-range default + * value (e.g., some integer reloptions use -2), but this isn't always + * possible. For example, a Boolean reloption cannot be given an + * out-of-range default, so we need another way to discover the source of + * its value. This offset is only used if given a value greater than + * zero. + */ + int isset_offset; } relopt_parse_elt; /* Local reloption definition */ [parent: aea916fe555a]