提交 997cb5a1 authored 作者: Thomas Mueller's avatar Thomas Mueller

Statement.cancel() had no effect when using the server mode.

上级 abc39a13
...@@ -21,6 +21,7 @@ import java.sql.Timestamp; ...@@ -21,6 +21,7 @@ import java.sql.Timestamp;
import java.sql.Types; import java.sql.Types;
import java.util.UUID; import java.util.UUID;
import org.h2.api.Trigger; import org.h2.api.Trigger;
import org.h2.constant.ErrorCode;
import org.h2.test.TestBase; import org.h2.test.TestBase;
/** /**
...@@ -256,26 +257,30 @@ public class TestPreparedStatement extends TestBase { ...@@ -256,26 +257,30 @@ public class TestPreparedStatement extends TestBase {
} }
private void testCancelReuse(Connection conn) throws Exception { private void testCancelReuse(Connection conn) throws Exception {
conn.createStatement().execute("CREATE ALIAS YIELD FOR \"java.lang.Thread.yield\""); conn.createStatement().execute("CREATE ALIAS SLEEP FOR \"java.lang.Thread.sleep\"");
final PreparedStatement prep = conn.prepareStatement("SELECT YIELD() FROM SYSTEM_RANGE(1, 100000000) LIMIT ?"); // sleep for 10 seconds
prep.setInt(1, 100000000); final PreparedStatement prep = conn.prepareStatement("SELECT SLEEP(?) FROM SYSTEM_RANGE(1, 10000) LIMIT ?");
prep.setInt(1, 1);
prep.setInt(2, 10000);
final SQLException[] ex = new SQLException[1];
Thread t = new Thread() { Thread t = new Thread() {
public void run() { public void run() {
try { try {
prep.execute(); prep.execute();
} catch (SQLException e) { } catch (SQLException e) {
// ignore ex[0] = e;
} }
} }
}; };
t.start(); t.start();
Thread.sleep(100); Thread.sleep(100);
try { prep.cancel();
prep.cancel(); t.join();
} catch (SQLException e) { SQLException e = ex[0];
this.assertKnownException(e); assertTrue(e != null);
} assertEquals(ErrorCode.STATEMENT_WAS_CANCELED, e.getErrorCode());
prep.setInt(1, 1); prep.setInt(1, 1);
prep.setInt(2, 1);
ResultSet rs = prep.executeQuery(); ResultSet rs = prep.executeQuery();
assertTrue(rs.next()); assertTrue(rs.next());
assertEquals(0, rs.getInt(1)); assertEquals(0, rs.getInt(1));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论