Re: pgsql: Remove unnecessary uses of Abs() - Mailing list pgsql-committers

From Peter Eisentraut
Subject Re: pgsql: Remove unnecessary uses of Abs()
Date
Msg-id 11e02543-b480-cb6b-1271-6438841b1b8a@enterprisedb.com
Whole thread Raw
In response to Re: pgsql: Remove unnecessary uses of Abs()  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: pgsql: Remove unnecessary uses of Abs()
List pgsql-committers
On 07.10.22 16:38, Tom Lane wrote:
> Peter Eisentraut <peter@eisentraut.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.




pgsql-committers by date:

Previous
From: Alvaro Herrera
Date:
Subject: pgsql: Fix self-referencing foreign keys with partitioned tables
Next
From: Tom Lane
Date:
Subject: Re: pgsql: Remove unnecessary uses of Abs()