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 2014/03/20 22:37:14 UTC
svn commit: r1579765 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests:
master/ suites/ tests/lang/
Author: dag
Date: Thu Mar 20 21:37:14 2014
New Revision: 1579765
URL: http://svn.apache.org/r1579765
Log:
DERBY-6519 Convert lang/joinDeadlock.sql to JUnit JoinDeadlockTest
Patch derby-6519.
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinDeadlockTest.java
Removed:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joinDeadlock.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql1
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql2
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_app.properties
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_derby.properties
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall?rev=1579765&r1=1579764&r2=1579765&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall Thu Mar 20 21:37:14 2014
@@ -7,7 +7,6 @@ lang/desc_index.sql
lang/emptyStatistics.sql
lang/infostreams.sql
lang/isolationLevels.sql
-lang/joinDeadlock.sql
lang/langUnitTests.sql
lang/maxMemPerTab.java
lang/openScans.sql
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinDeadlockTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinDeadlockTest.java?rev=1579765&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinDeadlockTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinDeadlockTest.java Thu Mar 20 21:37:14 2014
@@ -0,0 +1,118 @@
+/**
+ * Derby - Class org.apache.derbyTesting.functionTests.tests.lang.JoinDeadlockTest
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.lang;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+import junit.framework.Test;
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.SystemPropertyTestSetup;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+
+public final class JoinDeadlockTest extends BaseJDBCTestCase {
+ /**
+ * Public constructor required for running test as standalone JUnit.
+ * @param name test name
+ */
+ public JoinDeadlockTest(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ final Properties systemProperties = new Properties();
+ systemProperties.setProperty("derby.locks.waitTimeout", "7");
+ systemProperties.setProperty("derby.locks.deadlockTimeout", "5");
+
+ return new SystemPropertyTestSetup(
+ TestConfiguration.defaultSuite(JoinDeadlockTest.class),
+ systemProperties,
+ true);
+ }
+
+ public void testJoinDeadlock() throws Exception
+ {
+ Statement st = createStatement();
+
+ try {
+ Connection c2 = openDefaultConnection();
+ setAutoCommit(false);
+ c2.setAutoCommit(false);
+
+ // user 1 for bug 1573
+ // a deadlock when reopening a join gets an assertion
+ // violation in close()
+ st.executeUpdate("create table outer1(c1 int)");
+ st.executeUpdate("create index o1_i1 on outer1(c1)");
+ st.executeUpdate("insert into outer1 (c1) values 1, 2");
+ commit();
+ st.executeUpdate("create table inner1(c1 int, c2 char(254))");
+ st.executeUpdate("create index i1_i1 on inner1(c1)");
+ st.executeUpdate("insert into inner1 (c1) values 1, 2");
+ commit();
+ st.executeUpdate("create table inner2(c1 int, c2 char(254))");
+ st.executeUpdate("create index i2_i1 on inner2(c1)");
+ st.executeUpdate("insert into inner2 (c1) values 1, 2");
+ commit();
+
+ // this user will get lock timeout in subquery on 2nd next
+ ResultSet c1_rs = st.executeQuery(
+ "select * from outer1 where c1 <= (select count(*) " +
+ "from inner1, inner2 where outer1.c1 = outer1.c1)");
+ c1_rs.next();
+ assertEquals(c1_rs.getString(1), "1");
+
+ Statement c2_st = c2.createStatement();
+ c2_st.executeUpdate("update inner1 set c1 = c1 where c1 = 1");
+
+ try {
+ c1_rs.next();
+ } catch (SQLException e) {
+ assertSQLState("40XL1", e);
+ }
+
+ c2.rollback();
+ c2.close();
+ } finally {
+ // cleanup
+ dontThrow(st, "drop table outer1");
+ dontThrow(st, "drop table inner1");
+ dontThrow(st, "drop table inner2");
+ commit();
+ }
+ }
+
+
+ private void dontThrow(Statement st, String stm) {
+ try {
+ st.executeUpdate(stm);
+ } catch (SQLException e) {
+ // ignore, best effort here
+ println("\"" + stm+ "\" failed");
+ }
+ }
+}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java?rev=1579765&r1=1579764&r2=1579765&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Thu Mar 20 21:37:14 2014
@@ -239,6 +239,7 @@ public class _Suite extends BaseTestCase
suite.addTest(Derby5652.suite());
suite.addTest(TruncateTableAndOnlineBackupTest.suite());
suite.addTest(QueryPlanTest.suite());
+ suite.addTest(JoinDeadlockTest.suite());
suite.addTest(Derby6131.suite());
suite.addTest(AggBuiltinTest.suite());
suite.addTest(NewOptimizerOverridesTest.suite());