Canceling a Statement

NuoDB does not support a Statement#cancel() call, but does supply killStatement() in the implementation class RemStatement. Implementing Statement#cancel() in NuoDB’s JDBC driver is complicated because each connection to a TE processes requests synchronously (any attempt to cancel would only run after that statement has already completed).

To use RemStatement#killStatement(), cast a Statement object to RemStatement and supply the connection URL and connection properties, including credentials. This will cause a second connection to be created and a KILL STATEMENT command to be executed.

Casting from Statement to RemStatement should be done with extreme caution as the underlying RemStatement implementation class is subject to change.
final String dburl = "jdbc:com.nuodb://host:48004/my_database";
final Properties properties = new Properties()
    {
        {
            put("user", getDBUser());
            put("password", getDBPassword());
            put("schema", getDBSchema());
         }
    };

if (pStatement instanceof RemStatement)
    ((RemStatement)pStatement).killStatement(dburl, properties);