Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: parametrized statements, but always replan?



Kevin,

The only time prepared statements won't replan is if you re-use the prepared statement, which your code does not.

However... AFAIK, postgresql does not plan based on the parameter.

Dave
On 20-Dec-06, at 2:44 PM, Kevin Murphy wrote:

Sorry for the newbie question here. The documentation (documentation/81/server-prepare.html) isn't clear about this point. I'm using PG 8.1 with the matching jdbc driver.

Will the following code execute the query with a custom plan based on the value of var (assuming no use of the prepare threshold)?

       prestmt = conn.prepareStatement(query);
       prestmt.setString(1, var);
       resultSet = prestmt.executeQuery();
       // ... use result set ...
       resultSet.close();
       prestmt.close();

I'd like the safety of parametrized SQL statements combined with the greater performance (for certain queries) of having every statement planned based on the specific parameters. Ideally, I'd like to use prepareStatement() and executeQuery() with out-of-band parameters, but have the finished statement be custom-planned. Most of my queries wouldn't benefit from the "plan once, execute many times" model.

I've read documentation/81/server-prepare.html, but somehow it wasn't clear. It makes it sound as if by default, server-side prepared statements are not really used ("There are a number of ways to enable server side prepared statements ..."), which would be good for me.

But looking at my postgresql log, that doesn't seem to be the case; I see PREPARE, BIND, and EXECUTE lines for each query.

Thanks,
Kevin Murphy


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match





Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group