Re: Fix BUG #19586: money division overflow for INT64_MIN / -1 - Mailing list pgsql-hackers

From Rafia Sabih
Subject Re: Fix BUG #19586: money division overflow for INT64_MIN / -1
Date
Msg-id CA+FpmFfmj0=8LrY1fhYuqrxcvv0LF-ySUKbigkCt7QVwnHv4Aw@mail.gmail.com
Whole thread
Responses Re: Add RISC-V Zbb popcount optimization
List pgsql-hackers


On Thu, 30 Jul 2026 at 11:01, Andrey Rachitskiy <pl0h0yp1@gmail.com> wrote:
Hi, Hackers!

This continues BUG #19586 (money division overflow):
https://www.postgresql.org/message-id/19586-bb603bf5ad9934dd@postgresql.org

cash_div_int64() rejects division by zero, but not INT64_MIN / -1.
On x86-64 that surfaces as a floating-point exception via SIGFPE; on
aarch64 it silently returns INT64_MIN.  Multiplication by -1 is already
guarded (commit 4f96281587).
The attached patch handles division by -1 as negation, matching
int8div(), and raises "money out of range" when the dividend is
PG_INT64_MIN.  Regression tests cover int8/int4/int2.

Tristan looked at the patch on -bugs and suggested posting it here.

Patch attached.

I looked into this patch and it looks clean and complete as per the requirements mentioned.
I don't find any commitfest entry for this, maybe you can add it to get timely attention to this.

--
Regards,
Rafia Sabih
CYBERTEC PostgreSQL International GmbH

pgsql-hackers by date:

Previous
From: Chao Li
Date:
Subject: Re: A new C function `get_partition_root`.
Next
From: Nisha Moond
Date:
Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications