if (!db.isValid()) {  return; }
    public void isc_dsql_free_statement(    isc_stmt_handle stmt_handle,                                       int option) throws GDSException {        isc_stmt_handle_impl stmt = (isc_stmt_handle_impl) stmt_handle;        isc_db_handle_impl db = stmt.getRsr_rdb();        if (stmt_handle == null) {            throw new GDSException(ISCConstants.isc_bad_req_handle);        }        //Does not seem to be possible or necessary to close        //an execute procedure statement.        if (stmt.getIsSingletonResult() && option == ISCConstants.DSQL_close)         {            return;                } // end of if ()                synchronized (db) {            try {                if (log != null) log.debug("op_free_statement ");                db.out.writeInt(op_free_statement);                db.out.writeInt(stmt.getRsr_id());                db.out.writeInt(option);                db.out.flush();                            if (log != null) log.debug("sent");                receiveResponse(db,-1);                if (option == ISCConstants.DSQL_drop) {                    stmt.setInSqlda(null);                    stmt.setOutSqlda(null);                }                // those rows are used by cachedFetcher don't clear                stmt.clearRows();                                /** @todo implement statement handle tracking correctly */                // db.rdb_sql_requests.remove(stmt);            } catch (IOException ex) {                throw new GDSException(ISCConstants.isc_net_read_err);            }        }    }