Re: prepared statement: are they pre-compiled? - Mailing list pgsql-jdbc

From Heikki Linnakangas
Subject Re: prepared statement: are they pre-compiled?
Date
Msg-id 468CC580.6080207@enterprisedb.com
Whole thread Raw
In response to Re: prepared statement: are they pre-compiled?  (Flipper <flipper@gammadue.com>)
List pgsql-jdbc
Flipper wrote:
> On Thursday 5 July 2007 Heikki Linnakangas's cat, walking on the keyboard,
> wrote:
>> It depends on the prepareThreshold parameter. The default is 5, which
>> means that the query is parsed and planned separately for each call to
>> executeQuery, until the 5th call. After that, a generic plan is
>> generated and used thereafter.
>
> Thanks for you explaination!
> Where is this default parameter set? I cannot find it.

In the connection string, see
http://jdbc.postgresql.org/documentation/82/connect.html#connection-parameters.

Or you can set it programmatically with PGConnection.setPrepareThreshold.

> By the way, I cannot see the real difference in the code, and in fact the
> QueryExecutor goes into the sendParse with oneShot = false (since the flag
> has not been set). The sendParse creates a statement name and then sends the
> parse message. So the doubt is: the parse message is always sent and the
> server ignores it when a statement name is provided? Or is something in the
> Java code that I'm not getting?

I'm not familiar with that code myself either, but at the beginning of
sendParse, we check if we've already sent a PARSE for the given query
and parameters:

>         // Already parsed, or we have a Parse pending and the types are right?
>         int[] typeOIDs = params.getTypeOIDs();
>         if (query.isPreparedFor(typeOIDs))
>             return;


--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

pgsql-jdbc by date:

Previous
From: Flipper
Date:
Subject: Re: prepared statement: are they pre-compiled?
Next
From: Heikki Linnakangas
Date:
Subject: Re: prepared statement: are they pre-compiled?