Prepared Statement Question

From: "Strong, David" <david(dot)strong(at)unisys(dot)com>
To: <pgsql-hackers(at)postgresql(dot)org>
Subject: Prepared Statement Question
Date: 2006-10-09 15:30:07
Message-ID: B6419AF36AC8524082E1BC17DA2506E802579E42@USMV-EXCH2.na.uis.unisys.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

We have a question regarding prepared statements. The following code is located in src/backend/tcop/postgres.c:


/* Get the parameter format codes */
numPFormats = pq_getmsgint(input_message, 2);
if (numPFormats > 0)
{
int i;
pformats = (int16 *) palloc(numPFormats * sizeof(int16));
for (i = 0; i < numPFormats; i++)
pformats[i] = pq_getmsgint(input_message, 2);
}


There is similar code for Parameter Lists (ParamListInfo) and Result Format Codes (rformats). Unless we're missing something, a prepared statement would probably never change once prepared.

Would there be any issue or benefit moving the allocation of these buffers to the PreparedStatement structure so they stay with the prepared statement throughout its life? There is probably the question of named versus unnamed prepared statements, but is there anything else that we might be missing?

Along these lines, would it also be possible to keep an Executor State and Expression Context with the statement and just reset key parts of them, rather than rebuilding them from scratch each time a prepared statement is executed?

Thanks

David

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Mark Cave-Ayland 2006-10-09 15:35:00 Re: 8.2beta1 crash possibly in libpq
Previous Message Tom Lane 2006-10-09 15:08:04 Re: 8.2beta1 crash possibly in libpq