Re: prepared statement: are they pre-compiled?
| От | Heikki Linnakangas |
|---|---|
| Тема | Re: prepared statement: are they pre-compiled? |
| Дата | |
| Msg-id | 468CC580.6080207@enterprisedb.com обсуждение исходный текст |
| Ответ на | Re: prepared statement: are they pre-compiled? (Flipper <flipper@gammadue.com>) |
| Список | 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 по дате отправления: