[PATCH 1/2] Fix INT_MIN % -1 overflow in int8mod().

Поиск
Список
Период
Сортировка
От Xi Wang
Тема [PATCH 1/2] Fix INT_MIN % -1 overflow in int8mod().
Дата
Msg-id 50A415A8.2060105@gmail.com
обсуждение исходный текст
Ответ на Re: [PATCH] Fix INT_MIN % -1 overflow in int8mod().  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Return 0 for x % -1 instead of throwing an exception (e.g., when x
is INT_MIN).

Suggested by Tom Lane.
---src/backend/utils/adt/int8.c |    4 ++++1 file changed, 4 insertions(+)

diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c
index 0e59956..a30ab36 100644
--- a/src/backend/utils/adt/int8.c
+++ b/src/backend/utils/adt/int8.c
@@ -649,6 +649,10 @@ int8mod(PG_FUNCTION_ARGS)        PG_RETURN_NULL();    }
+    /* SELECT ((-9223372036854775808)::int8) % (-1); causes a floating point exception */
+    if (arg2 == -1)
+        PG_RETURN_INT64(0);
+    /* No overflow is possible */    PG_RETURN_INT64(arg1 % arg2);
-- 
1.7.10.4




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [PATCH] Fix INT_MIN % -1 overflow in int8mod().
Следующее
От: Xi Wang
Дата:
Сообщение: [PATCH 2/2] Clean up INT_MIN % -1 overflow in int4mod().