Re: [PATCH] Add function to_oct

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Nathan Bossart <nathandbossart@gmail.com>, Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: John Naylor <john.naylor@enterprisedb.com>, Kirk Wolak <wolakk@gmail.com>, Eric Radman <ericshane@eradman.com>, pgsql-hackers@postgresql.org
Date: 2023-08-22T14:20:02Z
Lists: pgsql-hackers
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?

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).




Commits

  1. Add to_bin() and to_oct().