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



Reply via email to