Re: Simplify the way of appending comma to stringInfo

From: David Geier <geidav(dot)pg(at)gmail(dot)com>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, 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:46:44
Message-ID: 28a586f0-8479-4069-8fc2-195ffaab3c05@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 08.12.2025 09:43, Heikki Linnakangas wrote:
> 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

It's also very likely not faster because now appendStringInfo() is
called one more time and appendStringInfo() also needs to check if the
string is empty or not, which requires an if in some form or shape (e.g.
a loop that bails immediately).

--
David Geier

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Jelte Fennema-Nio 2025-12-08 08:52:17 Re: Make copyObject work in C++
Previous Message Heikki Linnakangas 2025-12-08 08:43:44 Re: Simplify the way of appending comma to stringInfo