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 da...@apache.org on 2006/02/15 19:18:51 UTC
svn commit: r378045 [1/2] - in /db/derby/code/trunk/java:
engine/org/apache/derby/impl/sql/execute/
testing/org/apache/derbyTesting/functionTests/harness/
testing/org/apache/derbyTesting/functionTests/master/
testing/org/apache/derbyTesting/functionTes...
Author: davidvc
Date: Wed Feb 15 10:18:47 2006
New Revision: 378045
URL: http://svn.apache.org/viewcvs?rev=378045&view=rev
Log:
DERBY-918: Introduce new "junit" test type
DERBY-934: Create a set of JUnit tests for scrollable updatable cursors. I
also added these tests to the jdbcapi and derbynetclientmats suites (except
for ConcurrencyTest, which takes too long to run currently)
DERBY-797: After calling ResultSet.relative(0) the cursor loses its position
These are all submitted together because of interdependencies.
All contributed by Andreas Kornelliusen
NOTE: This may cause test failures on the IBM JDK; I did not test it with
this JDK, nor did I exclude these tests from running on this JDK, as I
couldn't say whether they work or not (I don't have the IBM JDK).
I did exclude running these tests on DerbyNet, because they have a hard
failure saying "null user not supported."
Ran these tests on JDK 1.4, JDK 1.3, with both embedded and network
client drivers. Note that the SURTest.out has failures; this is because
(a) the scrollable updatable result set work is not yet finished and
(b) there are differences between network client and embedded client which
need to be resolved.
--------
DERBY-797 files:
M java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java
DERBY-918 files:
M java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
M java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
M java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
DERBY-934 files:
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURBaseTest.java
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURQueryMixTest.java
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURQueryMixTest_app.properties
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURDataModelSetup.java
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURTest.java
AM java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURTest_app.properties
A java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out
A java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out
M java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
M java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall
M java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURBaseTest.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURDataModelSetup.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURQueryMixTest.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURQueryMixTest_app.properties (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURTest.java (with props)
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/SURTest_app.properties (with props)
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java Wed Feb 15 10:18:47 2006
@@ -334,8 +334,7 @@
// Return the current row for 0
if (row == 0)
{
- if ((beforeFirst || afterLast) ||
- (!beforeFirst && !afterLast)) {
+ if (beforeFirst || afterLast || currentPosition==0) {
return null;
} else {
return getRowFromHashTable(currentPosition);
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java Wed Feb 15 10:18:47 2006
@@ -472,7 +472,7 @@
int index = scriptName.lastIndexOf('/');
if (index == -1) // no test directory was specified
{
- if ( (!testType.equals("sql")) && (!testType.equals("java")) )
+ if ( (!testType.equals("sql")) && (!testType.equals("java")) && (!testType.equals("junit")))
{
System.out.println("Test argument should be of the form: <dir>/<test>.<ext>");
System.exit(1);
@@ -502,7 +502,7 @@
// Get the test name without the extension
testBase = scriptFileName.substring(0, scriptFileName.lastIndexOf("."+testType));
- if (testType.equals("java"))
+ if (testType.equals("java") || testType.equals("junit"))
{
//get the javaPath
String tmp = defaultPackageName.replace('/', '.');
@@ -621,7 +621,8 @@
// For certain test types, locate script file based on scriptName
// Then determine the actual test name and directory
- if ( (!testType.equals("java")) &&
+ if ( (!testType.equals("java")) &&
+ (!testType.equals("junit")) &&
(!testType.equals("unit")) &&
(!testType.equals("multi")) )
{
@@ -1527,7 +1528,6 @@
jvmflags = "";
}
}
-
if (NetServer.isJCCConnection(framework)
|| "true".equalsIgnoreCase(ap.getProperty("noSecurityManager")))
runWithoutSecurityManager = true;
@@ -2135,6 +2135,15 @@
v.addElement("-p");
v.addElement(propString);
}
+ else if (testType.equals("junit"))
+ {
+ v.addElement("junit.textui.TestRunner");
+ if (javaPath.length() > 0) {
+ v.addElement(javaPath + "." + testBase);
+ } else {
+ v.addElement(testBase);
+ }
+ }
else if ( testType.equals("multi") )
{
System.out.println("scriptiflename is: " + scriptFileName);
@@ -2405,7 +2414,11 @@
org.apache.derbyTesting.unitTests.harness.UnitTestMain.main(args);
*/
}
-
+ else if (testType.equals("junit"))
+ {
+ System.out.println("JUnit tests not implemented yet with useprocess=false");
+ System.exit(1);
+ }
ps.close();
if (installedSecurityManager)
{
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties Wed Feb 15 10:18:47 2006
@@ -1 +1 @@
-testtypes=sql,sql2,unit,java,multi,demo
+testtypes=sql,sql2,unit,java,multi,demo,junit
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out?rev=378045&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/SURTest.out Wed Feb 15 10:18:47 2006
@@ -0,0 +1,220 @@
+.F.F....F.F.F.F.F...E.E.E.E.E.E.E.E......java.sql.SQLException: invalid operation: connection closed
+Caused by: org.apache.derby.client.am.SqlException: invalid operation: connection closed
+ ... 17 more
+E.E.F.E.E.E.E.F.F....F.F.F.
+F.F...E.E.E.E.E.E.E.E......java.sql.SQLException: invalid operation: connection closed
+Caused by: org.apache.derby.client.am.SqlException: invalid operation: connection closed
+ ... 17 more
+E.E.F.E.E.E.E.F.F....F.F.F.F.F...E.E.E.E.E.
+E.E.E......java.sql.SQLException: invalid operation: connection closed
+Caused by: org.apache.derby.client.am.SqlException: invalid operation: connection closed
+ ... 17 more
+E.E.F.E.E.E.E.F.F....F.F.F.F.F...E.E.E.E.E.E.E.E......java.sql.SQLException: invalid operation: connection closed
+Caused by: org.apache.derby.client.am.SqlException: invalid operation: connection closed
+ ... 17 more
+E.
+E.F.E.E.E.E
+There were 56 errors:
+1) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+2) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+3) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+4) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+5) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+6) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+7) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+8) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+9) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+Caused by: org.apache.derby.client.am.DisconnectException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+ ... 22 more
+10) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+11) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+12) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+13) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+14) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+15) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+16) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+17) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+18) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+19) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+20) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+21) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+22) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+23) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+Caused by: org.apache.derby.client.am.DisconnectException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+ ... 22 more
+24) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+25) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+26) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+27) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+28) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+29) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+30) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+31) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+32) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+33) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+34) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+35) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+36) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+37) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+Caused by: org.apache.derby.client.am.DisconnectException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+ ... 22 more
+38) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+39) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+40) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+41) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+42) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+43) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+44) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+45) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+46) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+47) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+48) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+49) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+50) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 22 more
+51) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+Caused by: org.apache.derby.client.am.DisconnectException: Execution failed due to a distribution protocol error that caused deallocation of the conversation. A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x3
+ ... 22 more
+52) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+53) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+54) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+55) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 24 more
+56) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)java.sql.SQLException: ResultSet is not updatable.
+Caused by: org.apache.derby.client.am.SqlException: ResultSet is not updatable.
+ ... 23 more
+There were 32 failures:
+1) testConcurrencyModeWarning1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+2) testConcurrencyModeWarning2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+3) testFailOnUpdateOfReadOnlyResultSet1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+4) testFailOnUpdateOfReadOnlyResultSet2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+5) testFailOnUpdateOfReadOnlyResultSet3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+6) testFailOnUpdateOfReadOnlyResultSet4(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+7) testFailOnUpdateOfReadOnlyResultSet5(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+8) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+9) testConcurrencyModeWarning1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+10) testConcurrencyModeWarning2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+11) testFailOnUpdateOfReadOnlyResultSet1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+12) testFailOnUpdateOfReadOnlyResultSet2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+13) testFailOnUpdateOfReadOnlyResultSet3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+14) testFailOnUpdateOfReadOnlyResultSet4(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+15) testFailOnUpdateOfReadOnlyResultSet5(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+16) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+17) testConcurrencyModeWarning1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+18) testConcurrencyModeWarning2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+19) testFailOnUpdateOfReadOnlyResultSet1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+20) testFailOnUpdateOfReadOnlyResultSet2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+21) testFailOnUpdateOfReadOnlyResultSet3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+22) testFailOnUpdateOfReadOnlyResultSet4(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+23) testFailOnUpdateOfReadOnlyResultSet5(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+24) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+25) testConcurrencyModeWarning1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+26) testConcurrencyModeWarning2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected to get a warning
+27) testFailOnUpdateOfReadOnlyResultSet1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+28) testFailOnUpdateOfReadOnlyResultSet2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+29) testFailOnUpdateOfReadOnlyResultSet3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+30) testFailOnUpdateOfReadOnlyResultSet4(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+31) testFailOnUpdateOfReadOnlyResultSet5(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.ComparisonFailure: Unexpected SQL state expected:<XJ083> but was:<null>
+32) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+FAILURES!!!
+Tests run: 128, Failures: 32, Errors: 56
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out?rev=378045&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SURTest.out Wed Feb 15 10:18:47 2006
@@ -0,0 +1,68 @@
+.............E.E.E.E.E.E.E.E......F.E.F.E.E.E.E.........
+....E.E.E.E.E.E.E.E......F.E.F.E.E.E.E.............E.E.E.E.E.
+E.E.E......F.E.F.E.E.E.E.............E.E.E.E.E.E.E.E......F.
+E.F.E.E.E.E
+There were 52 errors:
+1) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+2) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+3) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+4) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+5) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+6) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+7) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+8) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+9) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+10) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+11) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+12) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+13) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+14) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+15) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+16) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+17) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+18) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+19) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+20) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+21) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+22) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+23) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+24) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+25) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+26) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+27) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+28) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+29) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+30) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+31) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+32) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+33) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+34) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+35) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+36) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+37) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+38) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+39) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+40) testIndexedScrollInsensitiveUpdateCursorWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+41) testIndexedScrollInsensitiveUpdateCursorWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+42) testPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+43) testOtherPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+44) testOtherAndOwnPrimaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+45) testMultipleKeyUpdates(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+46) testSecondaryIndexKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+47) testOtherSecondaryKeyUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+48) testScrollInsensitiveConcurUpdatableWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+49) testScrollInsensitiveConcurUpdatableWithForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+50) testScrollInsensitiveConcurUpdatableWithoutForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+51) testScrollInsensitiveConcurUpdatableWithoutForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+52) testScrollInsensitiveConcurUpdatableWithoutForUpdate3(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)SQL Exception: 'updateInt' not allowed because the ResultSet is not an updatable ResultSet.
+There were 8 failures:
+1) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected row to be updated by own change, however did not get updated value for column a expected:<666> but was:<0>
+2) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+3) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected row to be updated by own change, however did not get updated value for column a expected:<666> but was:<0>
+4) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+5) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected row to be updated by own change, however did not get updated value for column a expected:<666> but was:<0>
+6) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+7) testScrollablePositionedUpdateWithForUpdate1(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Expected row to be updated by own change, however did not get updated value for column a expected:<666> but was:<0>
+8) testScrollInsensitiveConcurUpdatableWithForUpdate2(org.apache.derbyTesting.functionTests.tests.jdbcapi.SURTest)junit.framework.AssertionFailedError: Invalid resultset concurrency on statement expected:<1008> but was:<1007>
+FAILURES!!!
+Tests run: 128, Failures: 8, Errors: 52
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude Wed Feb 15 10:18:47 2006
@@ -35,3 +35,8 @@
# excluding jdbcapi/derbyStress.java - jcc runs out of memory with this test
jdbcapi/derbyStress.java
largedata/LobLimits.java
+# These next three fail with an error saying that a null username is not
+# supported
+jdbcapi/SURQueryMixTest.junit
+jdbcapi/SURTest.junit
+jdbcapi/ConcurrencyTest.junit
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetclientmats.runall Wed Feb 15 10:18:47 2006
@@ -2,4 +2,5 @@
jdbcapi/xaSimplePositive.sql
jdbcapi/xaStateTran.sql
jdbcapi/lobStreams.java
-
+jdbcapi/SURQueryMixTest.junit
+jdbcapi/SURTest.junit
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall?rev=378045&r1=378044&r2=378045&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbcapi.runall Wed Feb 15 10:18:47 2006
@@ -20,3 +20,5 @@
jdbcapi/testRelative.java
jdbcapi/rsgetXXXcolumnNames.java
jdbcapi/Stream.java
+jdbcapi/SURQueryMixTest.junit
+jdbcapi/SURTest.junit
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java?rev=378045&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java Wed Feb 15 10:18:47 2006
@@ -0,0 +1,843 @@
+/*
+ *
+ * Derby - Class ConcurrencyTest
+ *
+ * Copyright 2006 The Apache Software Foundation or its
+ * licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the License.
+ */
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+import junit.framework.*;
+import java.sql.*;
+
+/**
+ * Testing concurrency behaviour in derby when creating the resultsets with
+ * different parameters.
+ * @author Andreas Korneliussen
+ */
+public class ConcurrencyTest extends SURBaseTest {
+
+ /** Creates a new instance of ConcurrencyTest */
+ public ConcurrencyTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Sets up the connection, then create the data model
+ */
+ public void setUp()
+ throws Exception
+ {
+ try {
+ super.setUp();
+ } catch (SQLException e) {
+ if (con!=null) tearDown();
+ throw e;
+ }
+ // For the concurrency tests, we recreate the model
+ // for each testcase (since we do commits)
+ SURDataModelSetup.createDataModel
+ (SURDataModelSetup.SURDataModel.MODEL_WITH_PK, con);
+ con.commit();
+ }
+
+ public void tearDown()
+ {
+ try {
+ con.rollback();
+ Statement dropStatement = con.createStatement();
+ dropStatement.execute("drop table t1");
+ con.commit();
+ con.close();
+ } catch (SQLException e) {
+ printStackTrace(e); // Want to propagate the real exception.
+ }
+ }
+
+ /**
+ * Test that update locks are downgraded to shared locks
+ * after repositioning.
+ * This test fails with Derby
+ */
+ public void testUpdateLockDownGrade1()
+ throws SQLException
+ {
+ Statement s = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1 for update");
+
+ // After navigating through the resultset,
+ // presumably all rows are locked with shared locks
+ while (rs.next());
+
+ // Now open up a connection
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+
+ ResultSet rs2 = s2.executeQuery("select * from t1 for update");
+ try {
+ rs2.next(); // We should be able to get a update lock here.
+ } catch (SQLException e) {
+ assertEquals("Unexpected SQL state", LOCK_TIMEOUT_SQL_STATE,
+ e.getSQLState());
+ return;
+ } finally {
+ con2.rollback();
+ }
+ assertTrue("Expected Derby to hold updatelocks in RR mode", false);
+ }
+
+ /**
+ * Test that we can aquire a update lock even if the row is locked with
+ * a shared lock.
+ */
+ public void testAquireUpdateLock1()
+ throws SQLException
+ {
+ Statement s = con.createStatement();
+ ResultSet rs = s.executeQuery("select * from t1");
+
+ // After navigating through the resultset,
+ // presumably all rows are locked with shared locks
+ while (rs.next());
+
+ // Now open up a connection
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+
+ ResultSet rs2 = s2.executeQuery("select * from t1 for update");
+ try {
+ rs2.next(); // We should be able to get a update lock here.
+ } finally {
+ con2.rollback();
+ }
+ }
+
+ /*
+ * Test that we do not get a concurrency problem when opening two cursors
+ * as readonly.
+ **/
+ public void testSharedLocks1()
+ throws SQLException
+ {
+ Statement s = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_READ_ONLY);
+ final ResultSet rs = s.executeQuery("select * from t1");
+ scrollForward(rs);
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_READ_ONLY);
+ try {
+ final ResultSet rs2 = s2.executeQuery("select * from t1");
+ scrollForward(rs2);
+ } finally {
+ rs.close();
+ con2.rollback();
+ con2.close();
+ }
+ }
+
+ /*
+ * Test that we do not get a concurrency problem when opening two cursors
+ * reading the same data (no parameters specified to create statement).
+ **/
+ public void testSharedLocks2()
+ throws SQLException
+ {
+ Statement s = con.createStatement();
+ ResultSet rs = s.executeQuery("select * from t1");
+ scrollForward(rs);
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement();
+ try {
+ final ResultSet rs2 = s2.executeQuery("select * from t1");
+ scrollForward(rs2);
+ } finally {
+ rs.close();
+ con2.rollback();
+ con2.close();
+ }
+ }
+
+ /*
+ * Test that we do not get a concurrency problem when opening one cursor
+ * as updatable (not using "for update"), and another cursor as read only
+ **/
+ public void testSharedAndUpdateLocks1()
+ throws SQLException {
+ Statement s = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+
+ ResultSet rs = s.executeQuery("select * from t1");
+ scrollForward(rs);
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_READ_ONLY);
+ try {
+ final ResultSet rs2 = s2.executeQuery("select * from t1");
+ scrollForward(rs2);
+ } finally {
+ rs.close();
+ con2.rollback();
+ con2.close();
+ }
+ }
+
+ /*
+ * Test that we do no get a concurrency problem when opening one cursor
+ * as updatable (using "for update"), and another cursor as read only.
+ *
+ **/
+ public void testSharedAndUpdateLocks2()
+ throws SQLException
+ {
+ Statement s = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1 for update");
+ scrollForward(rs);
+ Connection con2 = getNewConnection();
+ Statement s2 = con2.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_READ_ONLY);
+ try {
+ final ResultSet rs2 = s2.executeQuery("select * from t1");
+ scrollForward(rs2);
+ } finally {
+ rs.close();
+ con2.rollback();
+ con2.close();
+ }
+ }
+
+ /**
+ * Test what happens if you update a deleted + purged tuple.
+ * The transaction which deletes the tuple, will also
+ * ensure that the tuple is purged from the table, not only marked
+ * as deleted.
+ **/
+ public void testUpdatePurgedTuple1()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next();
+ int firstKey = rs.getInt(1);
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ int lastKey = firstKey;
+ while (rs.next()) {
+ lastKey = rs.getInt(1);
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ }
+
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("delete from t1 where id=? or id=?");
+ ps2.setInt(1, firstKey);
+ ps2.setInt(2, lastKey);
+ assertEquals("Expected two records to be deleted",
+ 2, ps2.executeUpdate());
+ println("T2: Deleted records with id=" + firstKey + " and id=" +
+ lastKey);
+ con2.commit();
+ println("T2: commit");
+ ps2 = con2.prepareStatement
+ ("call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE(?,?,?,?,?)");
+ ps2.setString(1, "APP"); // schema
+ ps2.setString(2, "T1"); // table name
+ ps2.setInt(3, 1); // purge
+ ps2.setInt(4, 0); // defragment rows
+ ps2.setInt(5, 0); // truncate end
+ println("T3: call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE");
+ println("T3: purges deleted records");
+ ps2.executeUpdate();
+ con2.commit();
+ println("T3: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ rs.first(); // Go to first tuple
+ println("T1: Read first Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(2, 3);
+ println("T1: updateInt(2, 3);");
+ rs.updateRow();
+ println("T1: updateRow()");
+ rs.last(); // Go to last tuple
+ println("T1: Read last Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(2, 3);
+ println("T1: updateInt(2, 3);");
+ rs.updateRow();
+ println("T1: updateRow()");
+ con.commit();
+ println("T1: commit");
+ rs = s.executeQuery("select * from t1");
+ println("T3: select * from table");
+ while (rs.next()) {
+ println("T3: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Test what happens if you update a deleted tuple using positioned update
+ * (same as testUpdatePurgedTuple1, except here we use positioned updates)
+ **/
+ public void testUpdatePurgedTuple2()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next(); // Point to first tuple
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ int firstKey = rs.getInt(1);
+ rs.next(); // Go to next
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("delete from t1 where id=?");
+ ps2.setInt(1, firstKey);
+ assertEquals("Expected one record to be deleted", 1,
+ ps2.executeUpdate());
+ println("T2: Deleted record with id=" + firstKey);
+ con2.commit();
+ println("T2: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ rs.previous(); // Go back to first tuple
+ println("T1: Read previous Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ PreparedStatement ps = con.prepareStatement
+ ("update T1 set a=? where current of " + rs.getCursorName());
+ ps.setInt(1, 3);
+ int updateCount = ps.executeUpdate();
+ println("T1: update table, set a=3 where current of " +
+ rs.getCursorName());
+ println("T1: commit");
+ con.commit();
+ rs = s.executeQuery("select * from t1");
+ while (rs.next()) {
+ println("T3: Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Test what happens if you update a tuple which is deleted, purged and
+ * reinserted
+ **/
+ public void testUpdatePurgedTuple3()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next(); // Point to first tuple
+ int firstKey = rs.getInt(1);
+ println("T1: read tuple with key " + firstKey);
+ rs.next(); // Go to next
+ println("T1: read next tuple");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("delete from t1 where id=?");
+ ps2.setInt(1, firstKey);
+ assertEquals("Expected one record to be deleted", 1,
+ ps2.executeUpdate());
+ println("T2: Deleted record with id=" + firstKey);
+ con2.commit();
+ println("T2: commit");
+
+ // Now purge the table
+ ps2 = con2.prepareStatement
+ ("call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE(?,?,?,?,?)");
+ ps2.setString(1, "APP"); // schema
+ ps2.setString(2, "T1"); // table name
+ ps2.setInt(3, 1); // purge
+ ps2.setInt(4, 0); // defragment rows
+ ps2.setInt(5, 0); // truncate end
+ println("T3: call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE");
+ println("T3: purges deleted records");
+ ps2.executeUpdate();
+ con2.commit();
+
+ ps2 = con2.prepareStatement("insert into t1 values(?,?,?,?)");
+ ps2.setInt(1, firstKey);
+ ps2.setInt(2, -1);
+ ps2.setInt(3, -1);
+ ps2.setString(4, "UPDATED TUPLE");
+ assertEquals("Expected one record to be inserted", 1,
+ ps2.executeUpdate());
+ println("T4: Inserted record (" + firstKey + ",-1,-1)" );
+ con2.commit();
+ println("T4: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ println("T1: read previous tuple");
+ rs.previous(); // Go back to first tuple
+ println("T1: id=" + rs.getInt(1));
+ rs.updateInt(2, 3);
+ println("T1: updateInt(2, 3);");
+ rs.updateRow();
+ println("T1: updated column 2, to value=3");
+ println("T1: commit");
+ con.commit();
+ rs = s.executeQuery("select * from t1");
+ while (rs.next()) {
+ println("T5: Read Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Test what happens if you update a tuple which is deleted, purged and
+ * then reinserted with the exact same values
+ **/
+ public void testUpdatePurgedTuple4()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next(); // Point to first tuple
+ int firstKey = rs.getInt(1);
+ int valA = rs.getInt(2);
+ int valB = rs.getInt(3);
+
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ rs.next(); // Go to next
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("delete from t1 where id=?");
+ ps2.setInt(1, firstKey);
+ assertEquals("Expected one record to be deleted", 1,
+ ps2.executeUpdate());
+ println("T2: Deleted record with id=" + firstKey);
+ con2.commit();
+ println("T2: commit");
+
+ // Now purge the table
+ ps2 = con2.prepareStatement
+ ("call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE(?,?,?,?,?)");
+ ps2.setString(1, "APP"); // schema
+ ps2.setString(2, "T1"); // table name
+ ps2.setInt(3, 1); // purge
+ ps2.setInt(4, 0); // defragment rows
+ ps2.setInt(5, 0); // truncate end
+ println("T3: call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE");
+ println("T3: purges deleted records");
+ ps2.executeUpdate();
+ con2.commit();
+ println("T3: commit");
+
+ ps2 = con2.prepareStatement("insert into t1 values(?,?,?,?)");
+ ps2.setInt(1, firstKey);
+ ps2.setInt(2, valA);
+ ps2.setInt(3, valB);
+ ps2.setString(4, "UPDATE TUPLE " + firstKey);
+ assertEquals("Expected one record to be inserted", 1,
+ ps2.executeUpdate());
+ println("T4: Inserted record (" + firstKey + "," + valA + "," +
+ valB + ")" );
+ con2.commit();
+ println("T4: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ rs.previous(); // Go back to first tuple
+ println("T1: Read previous Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ println("T1: id=" + rs.getInt(1));
+ rs.updateInt(2, 3);
+ rs.updateRow();
+ println("T1: updated column 2, to value=3");
+ println("T1: commit");
+ con.commit();
+ rs = s.executeQuery("select * from t1");
+ while (rs.next()) {
+ println("T4: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Test what happens if you update a tuple which has been modified by
+ * another transaction.
+ **/
+ public void testUpdateModifiedTuple1()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next(); // Point to first tuple
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ int firstKey = rs.getInt(1);
+ rs.next(); // Go to next
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("update t1 set b=? where id=?");
+ ps2.setInt(1, 999);
+ ps2.setInt(2, firstKey);
+ assertEquals("Expected one record to be updated", 1,
+ ps2.executeUpdate());
+ println("T2: Updated b=999 where id=" + firstKey);
+ con2.commit();
+ println("T2: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ rs.previous(); // Go back to first tuple
+ println("T1: Read previous Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(2, 3);
+ rs.updateRow();
+ println("T1: updated column 2, to value=3");
+ con.commit();
+ println("T1: commit");
+ rs = s.executeQuery("select * from t1");
+ while (rs.next()) {
+ println("T3: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Test what happens if you update a tuple which has been modified by
+ * another transaction (in this case the same column)
+ **/
+ public void testUpdateModifiedTuple2()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next(); // Point to first tuple
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ int firstKey = rs.getInt(1);
+ rs.next(); // Go to next
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("update t1 set b=? where id=?");
+ ps2.setInt(1, 999);
+ ps2.setInt(2, firstKey);
+ assertEquals("Expected one record to be updated", 1,
+ ps2.executeUpdate());
+ println("T2: Updated b=999 where id=" + firstKey);
+ con2.commit();
+ println("T2: commit");
+ } catch (SQLException e) {
+ con2.rollback();
+ throw e;
+ }
+ rs.previous(); // Go back to first tuple
+ println("T1: Read previous Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(3, 9999);
+ rs.updateRow();
+ println("T1: updated column 3, to value=9999");
+ con.commit();
+ println("T1: commit");
+ rs = s.executeQuery("select * from t1");
+ while (rs.next()) {
+ println("T3: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+
+ }
+ }
+
+ /**
+ * Tests that a ResultSet opened even in read uncommitted, gets a
+ * table intent lock, and that another transaction then cannot compress
+ * the table while the ResultSet is open.
+ **/
+ public void testTableIntentLock1()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ println("T1: select * from t1");
+ ResultSet rs = s.executeQuery("select * from t1 for update");
+ while (rs.next()) {
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ } // Now the cursor does not point to any tuples
+
+ // Compressing the table in another transaction:
+ Connection con2 = getNewConnection();
+ try {
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ PreparedStatement ps2 = con2.prepareStatement
+ ("call SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?)");
+ ps2.setString(1, "APP");
+ ps2.setString(2, "T1");
+ ps2.setInt(3, 0);
+ println("T2: call SYSCS_UTIL.SYSCS_COMPRESS_TABLE(APP, T1, 0)");
+ ps2.executeUpdate(); // This will hang
+ assertTrue("Expected T2 to hang", false);
+ } catch (SQLException e) {
+ println("T2: Got exception:" + e.getMessage());
+
+ assertEquals("Unexpected SQL state",
+ LOCK_TIMEOUT_EXPRESSION_SQL_STATE,
+ e.getSQLState());
+ } finally {
+ con2.rollback();
+ }
+ }
+
+ /**
+ * Test that Derby set updatelock on current row when using
+ * read-uncommitted
+ **/
+ public void testUpdateLockInReadUncommitted()
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
+ Statement s = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next();
+ int firstKey = rs.getInt(1);
+ println("T1: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ try {
+ PreparedStatement ps2 = con2.prepareStatement
+ ("delete from t1 where id=?");
+ ps2.setInt(1, firstKey);
+ ps2.executeUpdate();
+ assertTrue("expected record with id=" + firstKey +
+ " to be locked", false);
+ } catch (SQLException e) {
+ assertEquals("Unexpected SQL state", LOCK_TIMEOUT_SQL_STATE,
+ e.getSQLState());
+ } finally {
+ con2.rollback();
+ }
+ }
+
+ /**
+ * Test that the system cannot defragment any records
+ * as long as an updatable result set is open against the table.
+ **/
+ public void testDefragmentDuringScan()
+ throws SQLException
+ {
+ testCompressDuringScan(true, false);
+ }
+ /**
+ * Test that the system cannot truncate any records
+ * as long as an updatable result set is open against the table.
+ **/
+ public void testTruncateDuringScan()
+ throws SQLException
+ {
+ testCompressDuringScan(false, true);
+ }
+
+ /**
+ * Test that the system does not purge any records
+ * as long as we do either a defragment, or truncate
+ **/
+ private void testCompressDuringScan(boolean testDefragment,
+ boolean testTruncate)
+ throws SQLException
+ {
+ con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
+ Statement delStatement = con.createStatement();
+ // First delete all records except the last and first
+ int deleted = delStatement.executeUpdate
+ ("delete from T1 where id>0 and id<" + (recordCount-1));
+ int expectedDeleted = recordCount-2;
+ println("T1: delete records");
+ assertEquals("Invalid number of records deleted", expectedDeleted,
+ deleted);
+ con.commit();
+ println("T1: commit");
+
+ Statement s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next();
+ int firstKey = rs.getInt(1);
+ println("T2: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ int lastKey = firstKey;
+ while (rs.next()) {
+ lastKey = rs.getInt(1);
+ println("T2: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ }
+
+ final Connection con2 = getNewConnection();
+ con2.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
+ final PreparedStatement ps2 = con2.prepareStatement
+ ("call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE(?,?,?,?,?)");
+ ps2.setString(1, "APP"); // schema
+ ps2.setString(2, "T1"); // table name
+ ps2.setInt(3, 0); // purge
+ int defragment = testDefragment ? 1 : 0;
+ int truncate = testTruncate ? 1 : 0;
+ ps2.setInt(4, defragment); // defragment rows
+ ps2.setInt(5, truncate); // truncate end
+
+ println("T3: call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE");
+ println("T3: defragmenting rows");
+ try {
+ ps2.executeUpdate();
+ con2.commit();
+ println("T3: commit");
+ assertTrue("Expected T3 to hang waiting for Table lock", false);
+ } catch (SQLException e) {
+ println("T3: got expected exception");
+ con2.rollback();
+ }
+ rs.first(); // Go to first tuple
+ println("T1: Read first Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(2, 3);
+ println("T1: updateInt(2, 3);");
+ rs.updateRow();
+ println("T1: updateRow()");
+ rs.last(); // Go to last tuple
+ println("T1: Read last Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ rs.updateInt(2, 3);
+ println("T1: updateInt(2, 3);");
+ rs.updateRow();
+ println("T1: updateRow()");
+ con.commit();
+ println("T1: commit");
+ rs = s.executeQuery("select * from t1");
+ println("T4: select * from table");
+ while (rs.next()) {
+ println("T4: Read next Tuple:(" + rs.getInt(1) + "," +
+ rs.getInt(2) + "," +
+ rs.getInt(3) + ")");
+ }
+ }
+
+ // By providing a static suite(), you can customize which tests to run.
+ // The default is to run all tests in the TestCase subclass.
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite();
+
+ suite.addTest(new ConcurrencyTest("testUpdateLockDownGrade1"));
+ suite.addTest(new ConcurrencyTest("testAquireUpdateLock1"));
+
+ suite.addTest(new ConcurrencyTest("testSharedLocks1"));
+ suite.addTest(new ConcurrencyTest("testSharedLocks2"));
+ suite.addTest(new ConcurrencyTest("testSharedAndUpdateLocks1"));
+ suite.addTest(new ConcurrencyTest("testSharedAndUpdateLocks2"));
+
+ // The following testcases requires Scrollable Updatable ResultSets:
+// suite.addTest(new ConcurrencyTest("testUpdatePurgedTuple1"));
+// suite.addTest(new ConcurrencyTest("testUpdatePurgedTuple2"));
+// suite.addTest(new ConcurrencyTest("testUpdatePurgedTuple3"));
+// suite.addTest(new ConcurrencyTest("testUpdatePurgedTuple4"));
+
+
+// suite.addTest(new ConcurrencyTest("testUpdateModifiedTuple1"));
+// suite.addTest(new ConcurrencyTest("testUpdateModifiedTuple2"));
+// suite.addTest(new ConcurrencyTest("testTableIntentLock1"));
+// suite.addTest(new ConcurrencyTest("testUpdateLockInReadUncommitted"));
+// suite.addTest(new ConcurrencyTest("testDefragmentDuringScan"));
+// suite.addTest(new ConcurrencyTest("testTruncateDuringScan"));
+ /// ---------------
+
+
+ return suite;
+ }
+
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties?rev=378045&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties Wed Feb 15 10:18:47 2006
@@ -0,0 +1,3 @@
+runwithibm13=false
+runwithjdk13=false
+runwithjdk12=false
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ConcurrencyTest_app.properties
------------------------------------------------------------------------------
svn:eol-style = native