On Sat, Sep 28, 2013 at 9:44 PM, David Rowley <dgrowle...@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.
>
> More details here:
> http://www.postgresql.org/message-id/CAApHDvreSGYvtXJvqHcXZL8_tXiKKiFXhQyXgqtnQ5Yo=me...@mail.gmail.com
>
> 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

Reply via email to