Re: [PATCH] Add function to_oct - Mailing list pgsql-hackers

From Nathan Bossart
Subject Re: [PATCH] Add function to_oct
Date
Msg-id 20230822142608.GA651404@nathanxps13
Whole thread Raw
In response to Re: [PATCH] Add function to_oct  (Peter Eisentraut <peter@eisentraut.org>)
Responses Re: [PATCH] Add function to_oct
List pgsql-hackers
On Tue, Aug 22, 2023 at 04:20:02PM +0200, Peter Eisentraut wrote:
> On 20.08.23 17:25, Nathan Bossart wrote:
>> > Doing a quick test, shows that this changes the current behaviour,
>> > because all inputs are now treated as 64-bit:
>> > 
>> > HEAD:
>> > 
>> > select to_hex((-1234)::int);
>> >    to_hex
>> > ----------
>> >   fffffb2e
>> > 
>> > With patch:
>> > 
>> > select to_hex((-1234)::int);
>> >        to_hex
>> > ------------------
>> >   fffffffffffffb2e
>> Good catch.  In v8, I fixed this by first casting the input to uint32 for
>> the 32-bit versions of the functions.  This prevents the conversion to
>> uint64 from setting the rest of the bits.  AFAICT this behavior is pretty
>> well defined in the standard.
> 
> What standard?

C99

> I don't understand the reason for this handling of negative values.  I would
> expect that, say, to_hex(-1234) would return '-' || to_hex(1234).

For this patch set, I was trying to retain the current behavior, which is
to return the two's complement representation.  I'm open to changing this
if there's agreement on what the output should be.

-- 
Nathan Bossart
Amazon Web Services: https://aws.amazon.com



pgsql-hackers by date:

Previous
From: Aleksander Alekseev
Date:
Subject: Re: Make error messages about WAL segment size more consistent
Next
From: Tom Lane
Date:
Subject: Re: Oversight in reparameterize_path_by_child leading to executor crash