aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2017-09-12 12:13:12 -0700
committerAndres Freund <andres@anarazel.de>2017-09-12 12:13:12 -0700
commit6e7baa322773ff8c79d4d8883c99fdeff5bfa679 (patch)
tree026e53104854e441fffecbeb3a6971755c83ec47 /src
parent2d4a614e1ec34a746aca43d6a02aa3344dcf5fd4 (diff)
downloadpostgresql-6e7baa322773ff8c79d4d8883c99fdeff5bfa679.tar.gz
postgresql-6e7baa322773ff8c79d4d8883c99fdeff5bfa679.zip
Introduce BYTES unit for GUCs.
This is already useful for track_activity_query_size, and will further be used in a later commit making the WAL segment size configurable. Author: Beena Emerson Reviewed-By: Andres Freund Discussion: https://postgr.es/m/CAOG9ApEu8bXVwBxkOO9J7ZpM76TASK_vFMEEiCEjwhMmSLiaqQ@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/misc/guc.c14
-rw-r--r--src/include/utils/guc.h1
2 files changed, 10 insertions, 5 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index a05fb1a7eb3..bc9f09a0868 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -722,6 +722,11 @@ static const char *memory_units_hint = gettext_noop("Valid units for this parame
static const unit_conversion memory_unit_conversion_table[] =
{
+ {"GB", GUC_UNIT_BYTE, 1024 * 1024 * 1024},
+ {"MB", GUC_UNIT_BYTE, 1024 * 1024},
+ {"kB", GUC_UNIT_BYTE, 1024},
+ {"B", GUC_UNIT_BYTE, 1},
+
{"TB", GUC_UNIT_KB, 1024 * 1024 * 1024},
{"GB", GUC_UNIT_KB, 1024 * 1024},
{"MB", GUC_UNIT_KB, 1024},
@@ -2863,11 +2868,7 @@ static struct config_int ConfigureNamesInt[] =
{"track_activity_query_size", PGC_POSTMASTER, RESOURCES_MEM,
gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
NULL,
-
- /*
- * There is no _bytes_ unit, so the user can't supply units for
- * this.
- */
+ GUC_UNIT_BYTE
},
&pgstat_track_activity_query_size,
1024, 100, 102400,
@@ -8113,6 +8114,9 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
{
switch (conf->flags & (GUC_UNIT_MEMORY | GUC_UNIT_TIME))
{
+ case GUC_UNIT_BYTE:
+ values[2] = "B";
+ break;
case GUC_UNIT_KB:
values[2] = "kB";
break;
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index c1870d21301..467125a09da 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -219,6 +219,7 @@ typedef enum
#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 */