mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Support TB (terabyte) memory unit in GUC variables.
Patch by Simon Riggs, reviewed by Jeff Janes and me.
This commit is contained in:
@ -39,7 +39,7 @@
|
|||||||
For convenience,
|
For convenience,
|
||||||
a different unit can also be specified explicitly. Valid memory units
|
a different unit can also be specified explicitly. Valid memory units
|
||||||
are <literal>kB</literal> (kilobytes), <literal>MB</literal>
|
are <literal>kB</literal> (kilobytes), <literal>MB</literal>
|
||||||
(megabytes), and <literal>GB</literal> (gigabytes); valid time units
|
(megabytes), <literal>GB</literal> (gigabytes), and <literal>TB</literal> (terabytes); valid time units
|
||||||
are <literal>ms</literal> (milliseconds), <literal>s</literal>
|
are <literal>ms</literal> (milliseconds), <literal>s</literal>
|
||||||
(seconds), <literal>min</literal> (minutes), <literal>h</literal>
|
(seconds), <literal>min</literal> (minutes), <literal>h</literal>
|
||||||
(hours), and <literal>d</literal> (days). Note that the multiplier
|
(hours), and <literal>d</literal> (days). Note that the multiplier
|
||||||
|
@ -105,6 +105,7 @@
|
|||||||
|
|
||||||
#define KB_PER_MB (1024)
|
#define KB_PER_MB (1024)
|
||||||
#define KB_PER_GB (1024*1024)
|
#define KB_PER_GB (1024*1024)
|
||||||
|
#define KB_PER_TB (1024*1024*1024)
|
||||||
|
|
||||||
#define MS_PER_S 1000
|
#define MS_PER_S 1000
|
||||||
#define S_PER_MIN 60
|
#define S_PER_MIN 60
|
||||||
@ -4837,7 +4838,7 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg)
|
|||||||
{
|
{
|
||||||
/* Set hint for use if no match or trailing garbage */
|
/* Set hint for use if no match or trailing garbage */
|
||||||
if (hintmsg)
|
if (hintmsg)
|
||||||
*hintmsg = gettext_noop("Valid units for this parameter are \"kB\", \"MB\", and \"GB\".");
|
*hintmsg = gettext_noop("Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\".");
|
||||||
|
|
||||||
#if BLCKSZ < 1024 || BLCKSZ > (1024*1024)
|
#if BLCKSZ < 1024 || BLCKSZ > (1024*1024)
|
||||||
#error BLCKSZ must be between 1KB and 1MB
|
#error BLCKSZ must be between 1KB and 1MB
|
||||||
@ -4891,6 +4892,22 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (strncmp(endptr, "TB", 2) == 0)
|
||||||
|
{
|
||||||
|
endptr += 2;
|
||||||
|
switch (flags & GUC_UNIT_MEMORY)
|
||||||
|
{
|
||||||
|
case GUC_UNIT_KB:
|
||||||
|
val *= KB_PER_TB;
|
||||||
|
break;
|
||||||
|
case GUC_UNIT_BLOCKS:
|
||||||
|
val *= KB_PER_TB / (BLCKSZ / 1024);
|
||||||
|
break;
|
||||||
|
case GUC_UNIT_XBLOCKS:
|
||||||
|
val *= KB_PER_TB / (XLOG_BLCKSZ / 1024);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (flags & GUC_UNIT_TIME)
|
else if (flags & GUC_UNIT_TIME)
|
||||||
{
|
{
|
||||||
@ -7384,7 +7401,12 @@ _ShowOption(struct config_generic * record, bool use_units)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result % KB_PER_GB == 0)
|
if (result % KB_PER_TB == 0)
|
||||||
|
{
|
||||||
|
result /= KB_PER_TB;
|
||||||
|
unit = "TB";
|
||||||
|
}
|
||||||
|
else if (result % KB_PER_GB == 0)
|
||||||
{
|
{
|
||||||
result /= KB_PER_GB;
|
result /= KB_PER_GB;
|
||||||
unit = "GB";
|
unit = "GB";
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
# Memory units: kB = kilobytes Time units: ms = milliseconds
|
# Memory units: kB = kilobytes Time units: ms = milliseconds
|
||||||
# MB = megabytes s = seconds
|
# MB = megabytes s = seconds
|
||||||
# GB = gigabytes min = minutes
|
# GB = gigabytes min = minutes
|
||||||
# h = hours
|
# TB = terabytes h = hours
|
||||||
# d = days
|
# d = days
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user