]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Expand comment for isset_offset.
authorNathan Bossart <nathan@postgresql.org>
Mon, 24 Mar 2025 20:47:02 +0000 (15:47 -0500)
committerNathan Bossart <nathan@postgresql.org>
Mon, 24 Mar 2025 20:47:02 +0000 (15:47 -0500)
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

index 146aed47c2d6e2a8e4673c1d8d8fe3ffb598e37f..dfbb4c854606c4226bfcf9cd7845a421b49b650f 100644 (file)
@@ -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 */