Beispiel #1
0
int SSDB::multi_zdel(const Bytes &name, const std::vector<Bytes> &keys, int offset, char log_type){
	Transaction trans(binlogs);

	int ret = 0;
	std::vector<Bytes>::const_iterator it;
	it = keys.begin() + offset;
	for(; it != keys.end(); it++){
		const Bytes &key = *it;
		int tmp = zdel_one(this, name, key, log_type);
		if(tmp == -1){
			return -1;
		}
		ret += tmp;
	}
	if(ret >= 0){
		if(ret > 0){
			if(incr_zsize(this, name, -ret) == -1){
				return -1;
			}
		}
		leveldb::Status s = binlogs->commit();
		if(!s.ok()){
			log_error("zdel error: %s", s.ToString().c_str());
			return -1;
		}
	}
	return ret;
}
Beispiel #2
0
int zset_del(ldb_context_t* context, const ldb_slice_t* name, 
             const ldb_slice_t* key, const ldb_meta_t* meta){
  int ret = zdel_one(context, name, key, meta);
  int retval = LDB_OK; 
  if(ret >= 0){
    if(ret > 0){
      if(zset_incr_size(context, name, -ret) == -1){
        retval = LDB_ERR;
        goto end;
      }
    }
    char* errptr = NULL;
    ldb_context_writebatch_commit(context, &errptr);
    if( errptr != NULL ){
      fprintf(stderr, "write writebatch fail %s.\n", errptr);
      leveldb_free(errptr);
      retval = LDB_ERR;
      goto end; 
    }
    retval = LDB_OK;
  }else{
    retval = LDB_ERR;
  }
end:
  return retval;
}
Beispiel #3
0
int SSDB::zdel(const Bytes &name, const Bytes &key, char log_type){
	Transaction trans(binlogs);

	int ret = zdel_one(this, name, key, log_type);
	if(ret >= 0){
		if(ret > 0){
			if(incr_zsize(this, name, -ret) == -1){
				return -1;
			}
		}
		leveldb::Status s = binlogs->commit();
		if(!s.ok()){
			log_error("zdel error: %s", s.ToString().c_str());
			return -1;
		}
	}
	return ret;
}