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;
}