예제 #1
0
파일: dml.c 프로젝트: Zhoutall/stasis
int ReferentialDML_DeleteTuple(int xid, ReferentialAlgebra_context_t*context, char * tablename, tuple_t t) {
  //XXX assumes table format is key value, starting with a string.
  //  tuple_t val = tupleTail(t, 1);
  //  size_t val_len;
  //  byte * val_byte = byteTuple(val,&val_len);

  recordid tableRid = ReferentialDML_lookupTableRid(xid,context,tablename);

  if(t.type[0] == string_typ) {
    ThashRemove(xid, tableRid, (byte*)t.col[0].string, 1+strlen(t.col[0].string)); //, val_byte, val_len);
  } else if(t.type[0] == int64_typ) {
    abort(); // int keys not supported yet
    ThashRemove(xid, tableRid, (byte*)&t.col[0].int64, sizeof(int64_t)); //, val_byte, val_len);
  } else {
    abort();
  }

  //free(val_byte);
  //tupleFree(val);
  return 0;
}
예제 #2
0
JNIEXPORT jbyteArray JNICALL Java_stasis_jni_Stasis_hash_1remove
  (JNIEnv *e, jclass c, jlong xid, jlongArray jbarid, jbyteArray jbakey) {

  recordid rid = recordid_jlongArray(e, jbarid);
  if((*e)->ExceptionOccurred(e)) return 0;

  size_t keylen;
  byte * key = bytes_jbyteArray(e,jbakey,&keylen);
  if((*e)->ExceptionOccurred(e)) return 0;

  byte * ret;
  int retsize = ThashLookup((int)xid,rid,key,keylen,&ret);

  jbyteArray jbaret;
  if(retsize == -1) {
    jbaret = 0;
  } else {
    jbaret = jbyteArray_bytes(e,ret,retsize);
  }
  if((*e)->ExceptionOccurred(e)) return 0;
  ThashRemove((int)xid,rid,key,keylen);
  return jbaret;
}