Re: [PATCH] Add get_bytes() and set_bytes() functions - Mailing list pgsql-hackers

From Joel Jacobson
Subject Re: [PATCH] Add get_bytes() and set_bytes() functions
Date
Msg-id a3531c01-f6a9-4c85-be86-8df932b78400@app.fastmail.com
Whole thread Raw
In response to Re: [PATCH] Add get_bytes() and set_bytes() functions  (Aleksander Alekseev <aleksander@timescale.com>)
Responses Re: [PATCH] Add get_bytes() and set_bytes() functions
List pgsql-hackers
On Wed, Aug 14, 2024, at 13:31, Aleksander Alekseev wrote:
>> I wonder if get_bytes() and set_bytes() will behave differently
>> on little-endian vs big-endian systems?
> No, the returned value will not depend on the CPU endiness. Current
> implementation uses big-endian / network order which in my humble
> opinion is what most users would expect.

Nice.

I've reviewed and tested the patch.
It looks straight-forward to me.
I don't see any potential problems.
I've marked it Ready for Committer.

> I believe we also need reverse(bytea) and repeat(bytea, integer)
> functions e.g. for those who want little-endian. However I want to
> propose them separately when we are done with this patch.

I agree those functions would be nice too.

I also think it would be nice to provide these convenience functions:
to_bytes(bigint) -> bytea
from_bytes(bytea) -> bigint

Since if not having a current bytea value,
and just wanting to convert a bigint to bytea,
then one would need to construct an zeroed bytea
of the proper size first, to then use set_bytes().

And if just wanting to convert the entire bytea to a bigint,
then one would need to pass 0 as offset and the length
of the bytea as size.

Regards,

Joel



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: PG docs - Sequence CYCLE clause
Next
From: Thomas Munro
Date:
Subject: Re: macOS prefetching support