Hi, While tracking down a query with a JDBC prepared statement, I noticed, that the statement actually wasn't prepared but sent to the server as 'normal' Statement. In my case, this led to a very slow query since the normal statement does not propagate the correct type -- in my case I queried an indexed coloumn of type 'int8', which was correctly passed to the PreparedStatement with setLong() -- however it was sent with a different type to the server (the AbstractJdbc1Statement::m_bindTypes[] are never used in this case).
The reason for this is, that by default, the PreparedStatement is not configured to use a server side prepared statement. I assume, this is unintended. I fixed this by adding this to my local version (current CVS): ------------------ --- org/postgresql/jdbc3/Jdbc3PreparedStatement.java 29 Mar 2004 19:17:12 -0000 1.6 +++ org/postgresql/jdbc3/Jdbc3PreparedStatement.java 20 Jun 2004 11:54:00 -0000 @@ -13,6 +13,7 @@ public Jdbc3PreparedStatement(Jdbc3Connection connection, String sql) throws SQLException { super(connection, sql); + setUseServerPrepare(true); } public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID) throws SQLException -------------- (same for Jdbc2PreparedStatement and Jdbc1PreparedStatement). If this is the right way to do ? And if so .. could someone apply this patch ? Thanks, -hen Bücher kaufen und Freie Software fördern | http://bookzilla.de/ ---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings