You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by kr...@apache.org on 2008/02/07 09:46:08 UTC

svn commit: r619306 - /db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java

Author: kristwaa
Date: Thu Feb  7 00:46:06 2008
New Revision: 619306

URL: http://svn.apache.org/viewvc?rev=619306&view=rev
Log:
DERBY-3324: JDBC statement cache implementation. Added asserts (for sane builds) to check validity of StatementKey arguments (for instance result set holdability and concurrency). The asserts are added because there are so many integer arguments, and they can easily be mixed up.
Patch file: derby-3324-4a-statementkey_asserts.diff

Modified:
    db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java?rev=619306&r1=619305&r2=619306&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/stmtcache/StatementKey.java Thu Feb  7 00:46:06 2008
@@ -21,6 +21,10 @@
 
 package org.apache.derby.client.am.stmtcache;
 
+import java.sql.ResultSet;
+import java.sql.Statement;
+import org.apache.derby.shared.common.sanity.SanityManager;
+
 /**
  * A key representing a <code>java.sql.PreparedStatement</code> or a
  * <code>java.sql.CallableStatement</code>.
@@ -82,6 +86,26 @@
         this.concurrency = rsConcurrency;
         this.holdability = rsHoldability;
         this.autogeneratedKeys = autogeneratedKeys;
+        // In sane builds, make sure valid JDBC values are passed.
+        if (SanityManager.DEBUG) {
+            SanityManager.ASSERT(
+                    rsType == ResultSet.TYPE_FORWARD_ONLY ||
+                    rsType == ResultSet.TYPE_SCROLL_INSENSITIVE ||
+                    rsType == ResultSet.TYPE_SCROLL_SENSITIVE,
+                    "Invalid result set type: " + rsType);
+            SanityManager.ASSERT(
+                    rsConcurrency == ResultSet.CONCUR_READ_ONLY ||
+                    rsConcurrency == ResultSet.CONCUR_UPDATABLE,
+                    "Invalid result set concurrency: " + rsConcurrency);
+            SanityManager.ASSERT(
+                    rsHoldability == ResultSet.HOLD_CURSORS_OVER_COMMIT ||
+                    rsHoldability == ResultSet.CLOSE_CURSORS_AT_COMMIT,
+                    "Invalid result set holdability: " + rsHoldability);
+            SanityManager.ASSERT(
+                    autogeneratedKeys == Statement.NO_GENERATED_KEYS ||
+                    autogeneratedKeys == Statement.RETURN_GENERATED_KEYS,
+                    "Invalid autogenerated key value: " + autogeneratedKeys);
+        }
     }
 
     public boolean equals(Object obj) {