Re: Simplify the way of appending comma to stringInfo

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Simplify the way of appending comma to stringInfo
Date: 2025-12-08 08:43:44
Message-ID: aaf93314-69a8-4322-b540-b52e8ac3df68@iki.fi
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 08/12/2025 10:37, Chao Li wrote:
> Hi Hackers,
>
> In a lot places, there are logic of appending comma separators in a
> pattern like:
>
> ```
> for (int i = 0; i < len; i ++)
> {
>     if (i > 0)
>        appendStringInfoString(", ");
>     appendStringInfo(some-item);
> }
>
> ```
> This pattern uses an "if" check and two appendStringInfoString() to
> build a comma-delimited string.
>
> This can be simplified as:
>
> ```
> const char *sep = "";
> for (int i = 0; i < len; i ++)
> {
>      appendStringInfo("%s%s", sep, some-item);
>      sep = ", ";
> }
> ```
> The new pattern avoids the "if" check, and combines two
> appendStringInfoString() into a single appendStringInfo(). I think the
> new pattern is neater and faster.
>
> The old patterns are used in a lot of places, and there are some usages
> of the new pattern as well. Instead of creating a big cleanup patch, I
> just applied the new pattern to a single file for now to see if the
> hacker group likes this change.

It's a matter of taste, but I personally prefer the "old" pattern with
an explicit if() statement more. And I don't think it's worth the code
churn to change existing code either way.

- Heikki

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Geier 2025-12-08 08:46:44 Re: Simplify the way of appending comma to stringInfo
Previous Message Pavel Stehule 2025-12-08 08:41:10 Re: Simplify the way of appending comma to stringInfo