Re: bugfix patch for json_array_elements - Mailing list pgsql-hackers

From Craig Ringer
Subject Re: bugfix patch for json_array_elements
Date
Msg-id 52EEF6D8.4080409@2ndquadrant.com
Whole thread Raw
In response to Multiple calls to json_array_elements slow down nonlinearly  (Craig Ringer <craig@2ndquadrant.com>)
Responses Re: bugfix patch for json_array_elements  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers
On 02/03/2014 09:09 AM, Craig Ringer wrote:

> At a guess, we're looking at a case where a new child context is created
> at every call, so every MemoryContextResetChildren call has to deal with
> more child contexts.

That would be "yes". After a short run, I see 32849 lines like:

json_array_elements temporary cxt: 8192 total in 1 blocks; 8160 free (0
chunks); 32 used

under the context:

  PortalMemory: 8192 total in 1 blocks
    PortalHeapMemory: 7168 total in 3 blocks
      ExecutorState: 65600 total in 4 blocks
        ExprContext: 8192 total in 1 blocks
          json_array_elements temporary cxt: 8192 total in 1 blocks;
8160 free (0 chunks); 32 used


The attached patch deletes the context after use, bringing performance
back into line. It should be backpatched to 9.3.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Attachment

pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: pg_basebackup and pg_stat_tmp directory
Next
From: Marko Tiikkaja
Date:
Subject: Re: plpgsql.warn_shadow