在HSQLDB / JDBC中取消长时间运行的查询

时间:2014-08-19 11:50:21

标签: sql jdbc hsqldb cancellation

我们有大量长时间运行的SQL查询,并希望能够取消执行。到目前为止,我使用ExecutorCompletionService来运行查询,这对于取消尚未运行的查询非常有用。

我的问题是:我想硬取消当前正在运行的查询。方法java.sql.Statement.cancel()似乎不适用于HSQLDB。从java doc:"如果DBMS和驱动程序都支持中止SQL语句,则取消此Statement对象。"我想HSQLDB不支持取消。

有没有人知道如何取消声明(可能是丑陋的,但仍然可以接受的方式)?

2 个答案:

答案 0 :(得分:2)

有关可行的解决方案,请参阅https://sourceforge.net/p/hsqldb/bugs/1436/

简短的变体:

使用HSQLDB的最新SVN版本或服务器的2.3.4 Final。

如果要取消的当前查询使用hsqldb连接,请创建一个具有同一服务器管理员权限的新连接。

使用

select * from information_schema.system_sessions

使用您要查找的语句查找会话。

使用

ALTER SESSION <SESSIONNUMBER> RELEASE

取消声明。

关闭连接。

答案 1 :(得分:0)

对我来说,工作的 sql 命令是 ALTER SESSION <SESSIONNUMBER> END STATEMENT