Re: Remove dependence on integer wrapping
| От | Nathan Bossart |
|---|---|
| Тема | Re: Remove dependence on integer wrapping |
| Дата | |
| Msg-id | ZrON1CT7Lk9_EJOG@nathan обсуждение исходный текст |
| Ответ на | Re: Remove dependence on integer wrapping (Nathan Bossart <nathandbossart@gmail.com>) |
| Ответы |
Re: Remove dependence on integer wrapping
|
| Список | pgsql-hackers |
I started looking at 0001 again with the intent of committing it, and this
caught my eye:
- /* make the amount positive for digit-reconstruction loop */
- value = -value;
+ /*
+ * make the amount positive for digit-reconstruction loop, we can
+ * leave INT64_MIN unchanged
+ */
+ pg_neg_s64_overflow(value, &value);
The comment mentions that we can leave the minimum value unchanged, but it
doesn't explain why. Can we explain why?
+static inline bool
+pg_neg_s64_overflow(int64 a, int64 *result)
+{
+ if (unlikely(a == PG_INT64_MIN))
+ {
+ return true;
+ }
+ else
+ {
+ *result = -a;
+ return false;
+ }
+}
Can we add a comment that these routines do not set "result" when true is
returned?
--
nathan
В списке pgsql-hackers по дате отправления: