docs: public void cancel() throws SQLException {
      checkClose();
      boolean locked = lock.tryLock();
      try {
        if (executing) {
          protocol.cancelCurrentQuery();
        } else if (results != null && results.getFetchSize() != 0 && !results
            .isFullyLoaded(protocol)) {
          try {
            protocol.cancelCurrentQuery();
            skipMoreResults();
          } catch (SQLException e) {
            //eat exception
          }
          results.removeFetchSize();
        }
  
      } catch (SQLException e) {
        logger.error("error cancelling query", e);
        ExceptionMapper.throwException(e, connection, this);
      } finally {
        if (locked) {
          lock.unlock();
        }
      }
    }