Hi Vadim,
checked in your patch.
regards, Armin
Vadim Gritsenko wrote:
[I did it again - forgot the attachement]
Hi all,
This patch fixes incorrect test in StatementsForClassImpl. Currently for
create/update/delete procedures it has single check, in usePreparedStatement:
return !((classDescriptor.getUpdateProcedure() != null) && (classDescriptor.getUpdateProcedure().hasReturnValues()));
Which means that if update procedure is present, it will attempt to call a procedure for create/delete as well - even if none is configured.
Hope somebody can apply the patch. And please review also: http://marc.theaimsgroup.com/?l=ojb-dev&m=110433444012727 http://marc.theaimsgroup.com/?l=ojb-dev&m=110433552712812
Thanks, Vadim
------------------------------------------------------------------------
Index: src/java/org/apache/ojb/broker/accesslayer/StatementsForClassImpl.java
===================================================================
RCS file: /home/cvspublic/db-ojb/src/java/org/apache/ojb/broker/accesslayer/StatementsForClassImpl.java,v
retrieving revision 1.22
diff -u -r1.22 StatementsForClassImpl.java
--- src/java/org/apache/ojb/broker/accesslayer/StatementsForClassImpl.java 9 Apr 2004 13:22:29 -0000 1.22
+++ src/java/org/apache/ojb/broker/accesslayer/StatementsForClassImpl.java 11 Jan 2005 15:15:41 -0000
@@ -91,13 +91,13 @@
/**
* Answer true if a PreparedStatement has to be used
- * <br>false for a CallableStatement + * <br>false for a CallableStatement
* @return
*/
- protected boolean usePreparedStatement()
+ protected boolean usePreparedDeleteStatement()
{
- return !((classDescriptor.getUpdateProcedure() != null) && - (classDescriptor.getUpdateProcedure().hasReturnValues()));
+ return !(classDescriptor.getDeleteProcedure() != null &&
+ classDescriptor.getDeleteProcedure().hasReturnValues());
}
public PreparedStatement getDeleteStmt(Connection con) throws SQLException
@@ -112,7 +112,7 @@
con,
deleteSql,
Query.NOT_SCROLLABLE,
- usePreparedStatement());
+ usePreparedDeleteStatement());
}
catch (SQLException ex)
{
@@ -137,6 +137,17 @@
return stmt;
}
+ /**
+ * Answer true if a PreparedStatement has to be used
+ * <br>false for a CallableStatement
+ * @return
+ */
+ protected boolean usePreparedInsertStatement()
+ {
+ return !(classDescriptor.getInsertProcedure() != null &&
+ classDescriptor.getInsertProcedure().hasReturnValues());
+ }
+
public PreparedStatement getInsertStmt(Connection con) throws SQLException
{
if (insertSql == null)
@@ -149,7 +160,7 @@
con,
insertSql,
Query.NOT_SCROLLABLE,
- usePreparedStatement());
+ usePreparedInsertStatement());
}
catch (SQLException ex)
{
@@ -191,6 +210,17 @@
}
}
+ /**
+ * Answer true if a PreparedStatement has to be used
+ * <br>false for a CallableStatement
+ * @return
+ */
+ protected boolean usePreparedUpdateStatement()
+ {
+ return !(classDescriptor.getUpdateProcedure() != null &&
+ classDescriptor.getUpdateProcedure().hasReturnValues());
+ }
+
public PreparedStatement getUpdateStmt(Connection con) throws SQLException
{
if (updateSql == null)
@@ -203,7 +233,7 @@
con,
updateSql,
Query.NOT_SCROLLABLE,
- usePreparedStatement());
+ usePreparedUpdateStatement());
}
catch (SQLException ex)
{
@@ -225,14 +255,14 @@
/**
* prepares a statement with parameters that should work with most RDBMS
- * + *
* @param con the connection to utilize
* @param sql the sql syntax to use when creating the statement.
* @param scrollable determines if the statement will be scrollable.
* @param createPreparedStatement if <code>true</code>, then a
* [EMAIL PROTECTED] PreparedStatement} will be created. if <code>false</code>, then
- * a [EMAIL PROTECTED] CallableStatement} will be created.
- * + * a [EMAIL PROTECTED] java.sql.CallableStatement} will be created.
+ *
* @return a statement that can be used to execute the syntax contained in
* the <code>sql</code> argument.
*/
------------------------------------------------------------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
