On Thu, 2024-02-22 at 10:34 +0900, Michael Paquier wrote: > This part is done as of 011d60c4352c. I did not evaluate the rest > yet.
Thanks! I'm attaching the remaining patch for the Juli commitfest, if you don't get inspired before that. Yours, Laurenz Albe
From e8346ea88785a763d2bd3f99800ae928b7469f64 Mon Sep 17 00:00:00 2001 From: Laurenz Albe <laurenz.a...@cybertec.at> Date: Sat, 17 Feb 2024 17:24:19 +0100 Subject: [PATCH v1 3/3] Small speedup for array_out Avoid writing zero bytes where it is not necessary. This offers only a small, but measurable speed gain for larger arrays. --- src/backend/utils/adt/arrayfuncs.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index f3fee54e37..306c5062f7 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -1200,7 +1200,7 @@ array_out(PG_FUNCTION_ARGS) p = retval; #define APPENDSTR(str) (strcpy(p, (str)), p += strlen(p)) -#define APPENDCHAR(ch) (*p++ = (ch), *p = '\0') +#define APPENDCHAR(ch) (*p++ = (ch)) if (needdims) APPENDSTR(dims_str); @@ -1222,10 +1222,9 @@ array_out(PG_FUNCTION_ARGS) char ch = *tmp; if (ch == '"' || ch == '\\') - *p++ = '\\'; - *p++ = ch; + APPENDCHAR('\\'); + APPENDCHAR(ch); } - *p = '\0'; APPENDCHAR('"'); } else @@ -1248,6 +1247,8 @@ array_out(PG_FUNCTION_ARGS) j = i; } while (j != -1); + *p = '\0'; + #undef APPENDSTR #undef APPENDCHAR -- 2.43.2