Re: pgsql: Remove unnecessary uses of Abs()

From: Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Remove unnecessary uses of Abs()
Date: 2022-10-07 17:55:17
Message-ID: 11e02543-b480-cb6b-1271-6438841b1b8a@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

On 07.10.22 16:38, Tom Lane wrote:
> Peter Eisentraut <peter(at)eisentraut(dot)org> writes:
>> Remove unnecessary uses of Abs()
>
> Re-reading this, I noticed something that's probably not good:
> in ecpg/pgtypeslib/interval.c you did
>
> - sprintf(cp, "%02d.%0*d", abs(sec), precision, (int) Abs(fsec));
> + sprintf(cp, "%02d.%0*d", abs(sec), precision, abs(fsec));
>
> (in 2 places). I think this has possibly broken the direction of rounding
> for negative values, because we'll now truncate to integer before changing
> sign. Maybe it's okay but you have to make assumptions about what it'll
> do. Safer would have been
>
> + sprintf(cp, "%02d.%0*d", abs(sec), precision, (int) fabs(fsec));

fsec is of type fsec_t, which is int32. So these expressions are
integer all the way through.

> There is similar-looking coding in remove_gene(), but I didn't check
> the data type involved.

There, the type "Gene" is int, so also no floats involved AFAICT.

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2022-10-07 17:59:18 Re: pgsql: Remove unnecessary uses of Abs()
Previous Message Alvaro Herrera 2022-10-07 17:39:07 pgsql: Fix self-referencing foreign keys with partitioned tables