db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Raymond Kroeker" <raym...@raykroeker.com>
Subject Caching Prepared Statements
Date Fri, 25 Jul 2008 23:08:08 GMT
Hi All,
    I'm having a big of an issue with my cached prepared statements;
and would like a little feedback.

    When my application upgrades itself to a new version; it executes
DDL scripts through my data layer which caches prepared statements.
When the user jumps 2 versions; you have the following sql:

update META set VALUE='1' where KEY='version';
alter table META alter column VALUE set data type varchar(256);
update META set value='2' where KEY='version;

And the original table definition as follows:
create table META(ID bigint generated always as identity(start with
1000),KEY varchar(64) not null,VALUE varchar(128) not null,primary

    The issue is that when I issue an update on the cached prepared
statement I get an error of:
Caused by: java.sql.SQLException: A PreparedStatement has been
recompiled and the parameters have changed. If you are using JDBC you
must prepare the statement again.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:95)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:203)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:380)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:345)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1378)
	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1272)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1635)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)

    My question is as follows; is there a generic (read jdbc) api I
can use to determine when a statement needs to be dumped from cache?

JDK 6.0 u1
Ubuntu 8.04
Raymond Kroeker

View raw message