Hi Michael,
> On Wed, Oct 09, 2024 at 05:39:22PM +0300, Aleksander Alekseev wrote:
> > Attached is a PoC patch that fixes this. There are some TODOs and
> > FIXMEs but all in all it works and passes the tests.
>
> The patch has exactly three TODOs, and it is kind of hard to figure
> out what your goal here is by only looking at the patch.
>
> > The code becomes longer but the new code is simple and it's easier to
> > understand. If we agree on this refactoring we could decompose
> > adt/varlena.c into varlena.c and bytea.c - also something proposed by
> > Tom. IMO it would be a good move but this is not implemented in the
> > patch.
> >
> > Thoughts?
>
> The point is that moving all the logic related to bytea is going to
> reduce the risk of potential bugs if the varstring paths are
> manipulated so as they accidentally impact the former, even if it
> comes at a cost of duplicating some of it.
>
> It seems to me that the patch should be more ambitious than just
> trying to move the sort support functions and structures. How about
> moving anything related to bytea to a new bytea.c, including the
> in/out and receive/send functions. An idea would be to split the
> patch into roughly two pieces, to prove the benefits that this can
> have in the long-term:
> 1) Extract all the bytea-related code from varlena.c into its own
> file, even if it comes copy-paste some of the structures and routines
> shared by bytea and varstring. You would get the file structure done
> first.
> 2) Maximize the simplifications in the new bytea.c and the former
> varlena.c. This would show how this makes the code better for one,
> for the other, or for both.
Many thanks for your feedback. Unfortunately I had no opportunity to
work on this during the November commitfest, but I didn't forget about
the patch and am going to submit an updated version, probably
somewhere in January.
--
Best regards,
Aleksander Alekseev