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; }
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; }