Example #1
0
void stasis_record_write(int xid, Page * p, recordid rid, const byte *dat) {
  assert( (p->id == rid.page) && (p->memAddr != NULL) );
  assert(rid.size <= BLOB_THRESHOLD_SIZE);

  byte * buf = stasis_record_write_begin(xid, p, rid);
  memcpy(buf, dat, stasis_record_type_to_size(rid.size));
  stasis_record_write_done(xid,p,rid,buf);
  assert( (p->id == rid.page) && (p->memAddr != NULL) );
}
Example #2
0
static int op_realloc(const LogEntry* e, Page* p) {
  assert(e->update.arg_size >= sizeof(alloc_arg));
  const alloc_arg* arg = stasis_log_entry_update_args_cptr(e);

  recordid rid = {
    p->id,
    arg->slot,
    arg->type
  };
  assert(stasis_record_type_read(e->xid, p, rid) == INVALID_SLOT);
  int ret = operate_helper(e->xid, p, rid);

  int64_t size = stasis_record_length_read(e->xid,p,rid);

  assert(e->update.arg_size == sizeof(alloc_arg)
         + size);
  rid.size = size;
  byte * buf = stasis_record_write_begin(e->xid,p,rid);
  memcpy(buf, arg+1, size);
  stasis_record_write_done(e->xid,p,rid,buf);
  rid.size = arg->type;
  return ret;
}