void ResultSet::moveDesc(thread_db* tdbb, unsigned param, dsc& desc) { fb_assert(param > 0); jrd_req* jrdRequest = stmt->getRequest()->req_request; // Setup tdbb info necessary for blobs. AutoSetRestore2<jrd_req*, thread_db> autoRequest( tdbb, &thread_db::getRequest, &thread_db::setRequest, jrdRequest); AutoSetRestore<jrd_tra*> autoRequestTrans(&jrdRequest->req_transaction, tdbb->getTransaction()); MOV_move(tdbb, &getDesc(param), &desc); }
Firebird::MetaName ResultSet::getMetaName(thread_db* tdbb, unsigned param) { fb_assert(param > 0); jrd_req* jrdRequest = stmt->getRequest()->req_request; // Setup tdbb info necessary for blobs. AutoSetRestore2<jrd_req*, thread_db> autoRequest( tdbb, &thread_db::getRequest, &thread_db::setRequest, jrdRequest); AutoSetRestore<jrd_tra*> autoRequestTrans(&jrdRequest->req_transaction, tdbb->getTransaction()); return MOV_make_string2(tdbb, &getDesc(param), CS_METADATA); }
void PreparedStatement::setDesc(thread_db* tdbb, unsigned param, const dsc& value) { fb_assert(param > 0); jrd_req* jrdRequest = getRequest()->req_request; // Setup tdbb info necessary for blobs. AutoSetRestore2<jrd_req*, thread_db> autoRequest( tdbb, &thread_db::getRequest, &thread_db::setRequest, jrdRequest); AutoSetRestore<jrd_tra*> autoRequestTrans(&jrdRequest->req_transaction, tdbb->getTransaction()); MOV_move(tdbb, const_cast<dsc*>(&value), &inValues[(param - 1) * 2]); const dsc* desc = &inValues[(param - 1) * 2 + 1]; fb_assert(desc->dsc_dtype == dtype_short); *reinterpret_cast<SSHORT*>(desc->dsc_address) = 0; }