log.debug("op_transaction ");
if (log != null) log.debug("op_transaction ");
    public void isc_start_transaction(     isc_tr_handle tr_handle,                                        isc_db_handle db_handle,                                        Set tpb                                /*int tpb_length,                                byte[] tpb*/) throws GDSException {        isc_tr_handle_impl tr = (isc_tr_handle_impl) tr_handle;        isc_db_handle_impl db = (isc_db_handle_impl) db_handle;        if (tr_handle == null) {            throw new GDSException(isc_bad_trans_handle);        }        if (db_handle == null) {            throw new GDSException(isc_bad_db_handle);        }        synchronized (db) {            if (tr.getState() != isc_tr_handle.NOTRANSACTION) {                throw new GDSException(isc_tra_state);            }            tr.setState(isc_tr_handle.TRANSACTIONSTARTING);            try {                log.debug("op_transaction ");                db.out.writeInt(op_transaction);                db.out.writeInt(db.getRdb_id());                db.out.writeSet(isc_tpb_version3, tpb);                //            db.out.writeBuffer(tpb, tpb_length);                db.out.flush();                            log.debug("sent");                //out.flush();                Response r = receiveResponse(db);                tr.rtr_id = r.resp_object;            } catch (IOException ex) {                throw new GDSException(isc_network_error);            }            tr.rtr_rdb = db;            tr.setState(isc_tr_handle.TRANSACTIONSTARTED);            db.rdb_transactions.addElement(tr);        }    }