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

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

From
Aleksander Alekseev
Date:
Hi,

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.

[1]: http://postgr.es/m/Zy2UqcZS2XAXBibq%40paquier.xyz

-- 
Best regards,
Aleksander Alekseev

Attachment

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

From
Aleksander Alekseev
Date:
> 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.


--
Best regards,
Aleksander Alekseev

Attachment

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

From
Peter Eisentraut
Date:
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.



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

From
Aleksander Alekseev
Date:
Hi Michael,

> /* text_name()
>  * Converts a text type to a Name type.
>  */
>
> Not related to this patch, sorry for the regression, just noticed
> a nit while looking at the diffs of what you have here..  This one, as
> well as name_text(), uses a comment block that is inconsistent with
> the format we have in the tree.  It's a bit surprising that pgindent
> is not picking up that.

Good observation!

I experimented with pgindent a bit. This is an effect of the -nfc1
flag i.e. format_col1_comments=OFF. Unfortunately just removing it has
undesired side effects so we will have to modify pg_bsd_indent a bit,
apparently somewhere here:

pr_commnet.c:
```
    if (ps.col_1 && !format_col1_comments) {    /* if comment starts in column
                         * 1 it should not be touched */
```

I will start a new thread and propose an appropriate patch.

-- 
Best regards,
Aleksander Alekseev