Re: [PATCH] Split varlena.c into varlena.c and bytea.c

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Aleksander Alekseev <aleksander@timescale.com>, PostgreSQL Development <pgsql-hackers@postgresql.org>
Date: 2025-06-05T11:47:03Z
Lists: pgsql-hackers
On 31.03.25 17:29, Aleksander Alekseev wrote:
>> The proposed patch extracts the code dealing with bytea from varlena.c
>> into a separate file, as proposed previously [1]. It merely changes
>> the location of the existing functions. There are no other changes.
> 
> Rebased.

I think this is reasonable.  varlena.c is pretty big, and bytea is a 
reasonable subset to take out.  We already have a corresponding header 
file bytea.h, so the naming fits.

I wonder if makeStringAggState() is still useful.  This was factored out 
so that it could be shared between bytea_string_agg_transfn() and 
string_agg_transfn(), but now that these are in separate files, it seems 
to me that it might be easier now to just write the required code inline.

Here are some refinements to the includes:

--- a/src/backend/utils/adt/bytea.c
+++ b/src/backend/utils/adt/bytea.c
@@ -15,13 +15,20 @@
  #include "postgres.h"

  #include "access/detoast.h"
-#include "catalog/pg_collation.h"
+#include "catalog/pg_collation_d.h"
+#include "catalog/pg_type_d.h"
  #include "common/int.h"
-#include "funcapi.h"
+#include "fmgr.h"
  #include "libpq/pqformat.h"
+#include "port/pg_bitutils.h"
  #include "utils/builtins.h"
  #include "utils/bytea.h"
+#include "utils/fmgroids.h"
+#include "utils/fmgrprotos.h"
+#include "utils/memutils.h"
+#include "utils/sortsupport.h"
  #include "utils/varlena.h"
+#include "varatt.h"

Especially funcapi.h was apparently not used.  The other additions are 
required includes that came previously via indirect includes.



Commits

  1. Move code for the bytea data type from varlena.c to new bytea.c