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

3
我们有很多长时间运行的SQL查询,希望能够取消执行。目前,我正在使用ExecutorCompletionService来运行这些查询,对于尚未运行的查询取消操作效果很好。
我的问题是:我想强制取消当前正在运行的查询。java.sql.Statement.cancel()方法似乎不能与HSQLDB一起使用。根据java doc中的说明:“如果DBMS和驱动程序都支持中止SQL语句,则取消此Statement对象。”我猜测HSQLDB不支持取消操作。
是否有任何想法可以无论如何取消语句(以可能丑陋但仍可接受的方式)?

http://stackoverflow.com/questions/34094074/how-to-abort-cancel-hsqldb-query - golimar
2个回答

2
请参阅https://sourceforge.net/p/hsqldb/bugs/1436/以获取可行的解决方案。
简短版:
使用HSQLDB的最新SVN版本或2.3.4服务器版本。
如果要取消的当前查询正在使用hsqldb连接,请使用具有相同服务器的管理员权限创建一个新连接。
使用select * from information_schema.system_sessions查找所需语句的会话。
使用ALTER SESSION <SESSIONNUMBER> RELEASE取消该语句。
关闭连接。

0

对我来说,有效的 SQL 命令是 ALTER SESSION <SESSIONNUMBER> END STATEMENT


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接