From: | Justin Pryzby <pryzby(at)telsasoft(dot)com> |
---|---|
To: | Beena Emerson <memissemerson(at)gmail(dot)com> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers(at)postgresql(dot)org |
Subject: | [PATCH] Renumber confusing value for GUC_UNIT_BYTE |
Date: | 2022-07-20 14:52:21 |
Message-ID: | 20220720145220.GJ12702@telsasoft.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
The GUC units are currently defined like:
#define GUC_UNIT_KB 0x1000 /* value is in kilobytes */
#define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */
#define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */
#define GUC_UNIT_MB 0x4000 /* value is in megabytes */
#define GUC_UNIT_BYTE 0x8000 /* value is in bytes */
#define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */
#define GUC_UNIT_MS 0x10000 /* value is in milliseconds */
#define GUC_UNIT_S 0x20000 /* value is in seconds */
#define GUC_UNIT_MIN 0x30000 /* value is in minutes */
#define GUC_UNIT_TIME 0xF0000 /* mask for time-related units */
0x3000 and 0x30000 seemed wrong, since they're a combination of other flags
rather than being an independant power of two.
But actually, these aren't flags: they're tested in a "case" statement for
equality, not in a bitwise & test.
So the outlier is actually 0x8000, added at:
|commit 6e7baa322773ff8c79d4d8883c99fdeff5bfa679
|Author: Andres Freund <andres(at)anarazel(dot)de>
|Date: Tue Sep 12 12:13:12 2017 -0700
|
| Introduce BYTES unit for GUCs.
It looks like that originated here:
commit 162e4838103e7957cccfe7868fc28397b55ca1d7
Author: Justin Pryzby <pryzbyj(at)telsasoft(dot)com>
Date: Wed Jul 20 09:27:24 2022 -0500
Renumber confusing value for GUC_UNIT_BYTE
It had a power-of-two value, which looks right, and causes the other values
which aren't powers-of-two to look wrong. But this is tested for equality and
not a bitwise test.
See also:
6e7baa322773ff8c79d4d8883c99fdeff5bfa679
https://www.postgresql.org/message-id/CAOG9ApEu8bXVwBxkOO9J7ZpM76TASK_vFMEEiCEjwhMmSLiaqQ%40mail.gmail.com
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index 4d0920c42e2..be928fac881 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -219,11 +219,12 @@ typedef enum
#define GUC_DISALLOW_IN_AUTO_FILE 0x0800 /* can't set in
* PG_AUTOCONF_FILENAME */
+/* GUC_UNIT_* are not flags - they're tested for equality */
#define GUC_UNIT_KB 0x1000 /* value is in kilobytes */
#define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */
#define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */
#define GUC_UNIT_MB 0x4000 /* value is in megabytes */
-#define GUC_UNIT_BYTE 0x8000 /* value is in bytes */
+#define GUC_UNIT_BYTE 0x5000 /* value is in bytes */
#define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */
#define GUC_UNIT_MS 0x10000 /* value is in milliseconds */
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2022-07-20 15:05:00 | Re: pgsql: Default to hidden visibility for extension libraries where possi |
Previous Message | Tom Lane | 2022-07-20 14:20:04 | Re: pgsql: Default to hidden visibility for extension libraries where possi |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2022-07-20 15:05:00 | Re: pgsql: Default to hidden visibility for extension libraries where possi |
Previous Message | Fujii Masao | 2022-07-20 14:50:44 | Remove useless arguments in ReadCheckpointRecord(). |