]> granicus.if.org Git - postgresql/commitdiff
Introduce BYTES unit for GUCs.
authorAndres Freund <andres@anarazel.de>
Tue, 12 Sep 2017 19:13:12 +0000 (12:13 -0700)
committerAndres Freund <andres@anarazel.de>
Tue, 12 Sep 2017 19:13:12 +0000 (12:13 -0700)
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

src/backend/utils/misc/guc.c
src/include/utils/guc.h

index a05fb1a7eb3e25a74791058a415907b1cf22e721..bc9f09a08689dacc9eb78d0d68457a8e65ef6a07 100644 (file)
@@ -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;
index c1870d213014342f84888746eac23f71691e73e5..467125a09da41b591917e2bcb3ec4e0aeb16d866 100644 (file)
@@ -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 */