diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index f23e5dc..401be8a 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -43,7 +43,9 @@ are ms (milliseconds), s (seconds), min (minutes), h (hours), and d (days). Note that the multiplier - for memory units is 1024, not 1000. + for memory units is 1024, not 1000. And also note that if you set + less value than which is expected for the time setting, the value + would be rounded up. diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index a8a17c2..876d6e1 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -5126,9 +5126,11 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg) switch (flags & GUC_UNIT_TIME) { case GUC_UNIT_S: + val += (0 < val && val < MS_PER_S) ? MS_PER_S : 0; val /= MS_PER_S; break; case GUC_UNIT_MIN: + val += (0 < val && val < MS_PER_MIN) ? MS_PER_MIN : 0; val /= MS_PER_MIN; break; } @@ -5142,6 +5144,7 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg) val *= MS_PER_S; break; case GUC_UNIT_MIN: + val += (0 < val && val < S_PER_MIN) ? S_PER_MIN : 0; val /= S_PER_MIN; break; }