Re: appendStringInfo vs appendStringInfoString

Поиск
Список
Период
Сортировка
От David Rowley
Тема Re: appendStringInfo vs appendStringInfoString
Дата
Msg-id CAApHDvp4oA-=grh3o-WTm3B0uS89GOq4M6xiYYC27Ycrcub8Bg@mail.gmail.com
обсуждение исходный текст
Ответ на appendStringInfo vs appendStringInfoString  (David Rowley <dgrowleyml@gmail.com>)
Ответы Re: appendStringInfo vs appendStringInfoString  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-hackers
On Sat, Sep 28, 2013 at 9:44 PM, David Rowley <dgrowleyml@gmail.com> wrote:
I did some benchmarking earlier in the week for the new patch which was just commited to allow formatting in the log_line_prefix string. In version 0.4 of the patch there was some performance regression as I was doing appendStringInfo(buf, "%*s", padding, variable); instead of appendStringInfoString(buf, variable); This regression was fixed in a later version of the patch by only using appendStringInfo when the padding was 0.


Today I started looking through the entire source tree to look for places where appendStringInfo() could be replaced by appendStringInfoString(), I now have a patch which is around 100 KB in size which changes a large number of these instances.



...

Also on making the changes I noticed a possible small bug in the code that could cause a crash if for some reason a translation contained a %s. I know it is an unlikely scenario, never-the-less here is a patch to fix it.

diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c
index 562a7c9..91da50b 100644
--- a/src/backend/utils/fmgr/dfmgr.c
+++ b/src/backend/utils/fmgr/dfmgr.c
@@ -372,7 +372,7 @@ incompatible_module_error(const char *libname,
  }
 
  if (details.len == 0)
- appendStringInfo(&details,
+ appendStringInfoString(&details,
   _("Magic block has unexpected length or padding difference.")); 


David

В списке pgsql-hackers по дате отправления:

Предыдущее
От: David Rowley
Дата:
Сообщение: appendStringInfo vs appendStringInfoString
Следующее
От: Ian Lawrence Barwick
Дата:
Сообщение: Re: plpgsql.print_strict_params