From fc0d9b8c224ff6b84113cefdca1ba9dde879d863 Mon Sep 17 00:00:00 2001 From: John Naylor Date: Wed, 28 Jul 2021 11:22:58 -0400 Subject: Disallow negative strides in date_bin() It's not clear what the semantics of negative strides would be, so throw an error instead. Per report from Bauyrzhan Sakhariyev Reviewed-by: Tom Lane, Michael Paquier Discussion: https://www.postgresql.org/message-id/CAKpL73vZmLuFVuwF26FJ%2BNk11PVHhAnQRoREFcA03x7znRoFvA%40mail.gmail.com Backpatch to v14 --- src/backend/utils/adt/timestamp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/backend/utils/adt/timestamp.c') diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index ea847576cd2..1c0bf0aa5c8 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -3843,10 +3843,10 @@ timestamp_bin(PG_FUNCTION_ARGS) stride_usecs = stride->day * USECS_PER_DAY + stride->time; - if (stride_usecs == 0) + if (stride_usecs <= 0) ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("stride cannot equal zero"))); + errmsg("stride must be greater than zero"))); tm_diff = timestamp - origin; tm_delta = tm_diff - tm_diff % stride_usecs; @@ -4026,10 +4026,10 @@ timestamptz_bin(PG_FUNCTION_ARGS) stride_usecs = stride->day * USECS_PER_DAY + stride->time; - if (stride_usecs == 0) + if (stride_usecs <= 0) ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("stride cannot equal zero"))); + errmsg("stride must be greater than zero"))); tm_diff = timestamp - origin; tm_delta = tm_diff - tm_diff % stride_usecs; -- cgit v1.2.3