From: Joe Conway <mail@joeconway.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Hackers (PostgreSQL) <pgsql-hackers@postgresql.org>
Subject: Re: VALUES clause memory optimization
Date: Thu, 03 Aug 2006 21:27:16 -0700
Message-ID: <44D2CCA4.8040507@joeconway.com> (raw)
In-Reply-To: <2922.1154609337@sss.pgh.pa.us>
References: <44B69778.5050104@dunslane.net>
<50461.84.63.113.55.1152832991.squirrel@pezone.net>
<ECCAAC0A3182895D3D12B0E8@[172.26.14.247]>
<44B7ADFC.90205@dunslane.net>
<44D03D9F.80203@joeconway.com>
<15263.1154526181@sss.pgh.pa.us>
<44D0AF87.2030304@joeconway.com>
<16892.1154528708@sss.pgh.pa.us>
<44D0B9C1.2020608@joeconway.com>
<17704.1154534183@sss.pgh.pa.us>
<44D140DF.5080209@joeconway.com>
<2922.1154609337@sss.pgh.pa.us>
Tom Lane wrote:
> The reason we could safely list_free inside transformInsertRow is that
> we know all its callers have just built the passed-in list and so there
> are no other pointers to it. That doesn't apply in the general case of
> grammar output.
What about for the specific case of an InsertStmt? It seems that we
could at least get away with freeing the raw-expression list in that case.
In terms of freeing an entire arbitrary node, could we create a
backend/nodes/freefuncs.c file that does a recursive freeObject()
similar to the way copyObject() does in backend/nodes/copyfuncs.c?
> My advice is to get that low-hanging fruit
> in transformInsertRow and leave the other ideas for 8.3.
OK. This should be safe also, correct?
Thanks,
Joe
8<----------------------------------------
inline patch 1: src/backend/parser/analyze.c (+1/-0 lines) download inline-1.patchdiff -c -r1.341 analyze.c
*** src/backend/parser/analyze.c 2 Aug 2006 01:59:46 -0000 1.341
--- src/backend/parser/analyze.c 2 Aug 2006 05:13:20 -0000
***************
*** 2191,2196 ****
--- 2196,2202 ----
for (i = 0; i < sublist_length; i++)
{
coltypes[i] = select_common_type(coltype_lists[i], "VALUES");
+ list_free(coltype_lists[i]);
}
newExprsLists = NIL;
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-docs@postgresql.org
Cc: mail@joeconway.com, tgl@sss.pgh.pa.us, pgsql-hackers@postgresql.org
Subject: Re: VALUES clause memory optimization
In-Reply-To: <44D2CCA4.8040507@joeconway.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox